NSString

objective-c 字符串查找并删除

#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>

int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *str1 = @"This is a example.";
NSMutableString *mstr = [[NSMutableString alloc] init];
NSRange substr;
//创建可变字符串
mstr = [NSMutableString stringWithString:str1];
NSLog(@"%@",mstr);
//插入字符
[mstr insertString:@"very easy " atIndex:10];
NSLog(@"%@",mstr);
//删除一些字符
[mstr deleteCharactersInRange:NSMakeRange(10,5)];
NSLog(@"%@",mstr);
//查找并删除
substr = [mstr rangeOfString:@"easy "];
if (substr.location != NSNotFound) {
[mstr deleteCharactersInRange:substr];
NSLog(@"%@",mstr);
}
//重新设置字符串
[mstr setString:@"This is string A"];
//替换字符串
[mstr replaceCharactersInRange:NSMakeRange(15, 1) withString:@"BBB"];
NSLog(@"%@",mstr);
//查找第一个并替换
NSString *search = @"This is";
NSString *replace = @"An example of";
substr = [mstr rangeOfString:search];
if (substr.location != NSNotFound) {
[mstr replaceCharactersInRange:substr withString:replace];
NSLog(@"%@",mstr);
}
//查找全部匹配的,并替换
search = @"a";
replace = @"X";
substr = [mstr rangeOfString:search];
while (substr.location != NSNotFound) {
[mstr replaceCharactersInRange:substr withString:replace];
substr = [mstr rangeOfString:search];
}
NSLog(@"%@",mstr);
[pool drain];
return 0;
}

 实例:

#pragma mark - 正则匹配图片 将大写图片改为小写
+(NSString*)changeToLowerPicture:(NSString *)text
{
    NSMutableString *mstr = [[[NSMutableString alloc] init] autorelease];
    //新建动态字符串
    mstr = [NSMutableString stringWithString:text];
    //NSLog(@"*--mstr.retainCount = %d", mstr.retainCount);
    NSString *regEx = @"[A-Za-z0-9_]*figure.[A-Za-z0-9_]*"; //// +(.jpg|.gif)
    NSRange subRange = [mstr rangeOfString:regEx options:NSRegularExpressionSearch];
    
    //循环每次都会从0开始查找 所以要在循环中重新设置查找起点
    while (subRange.location != NSNotFound)
    {
        NSString* search = [mstr substringWithRange:subRange];
        NSString* replace = [search lowercaseString];
        NSLog(@"*--lowerPicName = %@", search);
        [mstr replaceCharactersInRange:subRange withString:replace];
        
        //新的查找范围,不包含已经替换过的 (不然会陷入无限循环)
        NSRange newRange;
        newRange.location = subRange.location + subRange.length;
        newRange.length = mstr.length - newRange.location;
        subRange = [mstr rangeOfString:regEx options:NSRegularExpressionSearch range:newRange];
    }
    return mstr;
}
#pragma mark -

 

NSString 的比较用法

 

NSString *value = @"1234567890";

 

比较的方法:

[value compare:(NSString *)];

[value compare:(NSString *) options:(NSStringCompareOptions)];

[value compare:(NSString *) options:(NSStringCompareOptions) range:(NSRange)];

 

传入的参数:

compare:(NSString *)

传入一个需要比较的字符串。

例如 [value compare:@"1234567890"],返回 NSOrderedSame。

 

options:(NSStringCompareOptions)

传入 NSStringCompareOptions 枚举的值

enum{

    NSCaseInsensitiveSearch = 1,//不区分大小写比较

    NSLiteralSearch = 2,//区分大小写比较

    NSBackwardsSearch = 4,//从字符串末尾开始搜索

    NSAnchoredSearch = 8,//搜索限制范围的字符串

    NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt

//以下定义高于 mac os 10.5 或者高于 iphone 2.0 可用

    ,

    NSDiacriticInsensitiveSearch = 128,//忽略 "-" 符号的比较

    NSWidthInsensitiveSearch = 256,//忽略字符串的长度,比较出结果

    NSForcedOrderingSearch = 512//忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending

//以下定义高于 iphone 3.2 可用

    ,

    NSRegularExpressionSearch = 1024//只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法。使用通用兼容的比较方法,如果设置此项,可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch

}

 

range:(NSRange)

比较字符串的范围

 

结构变量:

location: 需要比较的字串起始位置(以0为起始)

length: 需要比较的字串长度

 

返回值:

typedef enum _NSComparisonResult {
     NSOrderedAscending = -1,    // < 升序
     NSOrderedSame,              // = 等于
     NSOrderedDescending   // > 降序
} NSComparisonResult;

 
 
posted @ 2013-01-09 16:36  六界剑仙  阅读(183)  评论(0)    收藏  举报