Objective-C之NSString和NSMutableString

三世轮回 提交于 2020-03-05 09:30:19

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。

 

+(id) stringWithContentsOfFile:path encoding:enc error:err
创建一个新字符串并将其设置为path指定的文件的内容,使用字符编码enc,如果非零,则返回err中错误

 

+(id) stringWithContentsOfURL:url encoding:enc error:err
创建一个新的字符串,并将其设置为url的内容,使用字符编码enc,如果非零,则返回err中的错误

+(id) string
创建一个新的空字符串

+(id) stringWithString:nsstring
创建一个新的字符串,并将其设置为nsstring

    NSString *str = @"1";

    //initwithstring和stringwithtstring是不是现在不可以直接加字符串,而是必须加字符串的名字?

    NSString *str2 = [NSString stringWithString:str];

 

-(id)initWithString:nsstring
将分配的字符串设置为nsstring

    NSString *str = @"1";

    NSString *str1 = [[NSString alloc] initWithString:str];

 

-(id) initWithContentsOfFile:path encoding:enc error:err
将字符串设置为path制定的文件的内容

-(id) initWithContentsOfURL:url encoding:enc error:err
将字符串设置为url(NSURL *)url的内容,使用字符编码enc,如果非零,则返回err中的错误

-(id) (UNSIgned int)length
返回字符串中的字符数目 

[str length];字符串长度

-(unichar)characterAtIndex:i  ???????
返回索引i的Unicode字符

-(NSString *)substringFromIndex:i
返回从i开始知道结尾的子字符串

-(NSString *)substringWithRange:range
根据指定范围返回子字符串

-(NSString *)substringToIndex:i
返回从该字符串开始到索i的子字符串

-(NSComparator *)caseInsensitiveCompare:nsstring
比较两个字符串,忽略大小写

-(NSComparator *)compare:nsstring
比较两个字符串

-(BOOL)hasPrefix:nsstring     // prefix为前缀的意思
测试字符串是否以nsstring开始

-(BOOL)hasSuffix:nsstring    // suffix为后缀 下标的意思
测试字符串是否以nsstrng结尾

-(BOOL)isEqualToString:nsstring  ???????与isEqual 有什么区别?
测试两个字符串是否相等

-(NSString *) capitalizedString
返回每个单词首字母大写的字符串(每个单词的其余字母转换为小写)

-(NSString *)lowercaseString  
返回转换为小写的字符串

-(NSString *)uppercaseString
返回转换为大写的字符串

-(const char*)UTF8String
返回转换为UIF-8字符串的字符串

-(double)doubleValue
返回转换为double的字符串

-(float)floatValue

返回转换为浮点值的字符串

-(NSInteger)integerValue
返回转换为NSInteger整数的字符串

-(int)intValue
返回转换为整数的字符串

NSMutableString方法

NSMutableString类可以用来创建可以更改字符的字符串对句.因为是NSString的子类,所以可以使用NSString类的所有方法.
+(id) stringWithCapacity:size
创建一个字符串,初始包含size的字符

-(id) initWithCapacity:size
使用初始容量为size的字符串来初始化字符串

-(void) setString:nsstring
将字符串设置为nsstring

-(void) appendString:nsstring
在接收者的末尾附加nsstring

-(void) deleteCharactersInRange:range
删除指定range中的字符

-(void) insertString:nsstring atIndex:i
以索引i为起始位置插入nsstring

-(void) replaceCharactersInRange:range withString:nsstring
使用nsstring替换range指定的字符

-(void) replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range
根据选项opts。使用指定range中的nsstring2替换所有的nsstring。选项可以包括NSBackwardsSearch(从范围的结尾 开始搜索)NSAnchoredSearch(nsstring必须匹配范围的开始),NSLiteralSearch(执行逐字节比较以及 NSCaceInsensitiveSearch的按位或组合

实例:

 1、NSString *Beijing= @"北京欢迎您";        //字符串的声明

 2、NSString *log=@"北京欢迎您a"; //[NSString stringWithFormat:@"I am '%@'",Beijing];     //字符串格式化

 3、NSString *zhui = [Beijing stringByAppendingString:@"哈哈哈"];        //字符串追加  

结果是北京欢迎您哈哈哈;append意思为附加 挂上;

4、bool b=[Beijing isEqualToString:log];                               //字符串比较

5、NSString *hh = @"http://www.sina.com.cn";
    if([hh hasPrefix:@"http"]){                                          //查找以http开头的字符串
        NSLog(@"含有http");
    }else{
        NSLog(@"没有http");
    }
6、 NSString *ss = @"123";
      int a = [ss intValue]+13;                                   //字符串转int型
      double dd = [ss doubleValue]+33.3;                          //字符串转double型
      NSLog(@"%g",dd);
7、字符串转数组 
    NSString *zifuchuan =@"one,two,three,four";
    NSLog(@"string:%@",zifuchuan);
    NSArray *array = [zifuchuan componentsSeparatedByString:@","];
//    NSLog(@"array:%@",array);                             //输出整个数组中所有元素 
结果:
2015-08-19 16:30:19.900 Demo[93879:4702032] string:one,two,three,four
2015-08-19 16:30:19.901 Demo[93879:4702032] array:(    one,    two,    three,    four)

 

    NSString *value = [array objectAtIndex:0];          //取出第0个元素
    NSLog(@"value:%@",value);
结果:
2015-08-19 16:33:03.577 Demo[93917:4703555] value:one
8、//数组转字符串
    NSString * zifuchuan2 = [array componentsJoinedByString:@","];
    NSLog(@"zifuchuan2:%@",zifuchuan2);
结果:zifuchuan2:one,two,three,four    
9、-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringToIndex:3];
NSLog(@"string2:%@",string2);
结果:string2:Thi
 
10、-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringFromIndex:3];
NSLog(@"string2:%@",string2);
结果:2015-08-19 16:41:51.772 Demo[94021:4708352] string2:s is a string
 
11、-substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串
NSString *string1 = @"This is a string";
NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];
NSLog(@"string2:%@",string2);
结果:string2:This
 

//去除字符串中用括号括住的位置
-(NSString *)handleStringWithString:(NSString *)str{

NSMutableString * muStr = [NSMutableString stringWithString:str];
while (1) {
NSRange range = [muStr rangeOfString:@"("];
NSRange range1 = [muStr rangeOfString:@")"];
if (range.location != NSNotFound) {
NSInteger loc = range.location;
NSInteger len = range1.location - range.location;
[muStr deleteCharactersInRange:NSMakeRange(loc, len + 1)];
}else{
break;
}
}

return muStr;
}

 
--------操作动态字符串--NSMutableString----------------------------------------------------
    NSMutableString *mstr = [[NSMutableString alloc] init];实例话一个可变字符串;
    NSString *str1 = @"This is a example.";
    //创建可变字符串
    mstr = [NSMutableString stringWithString:str1];
    //插入字符
    [mstr insertString:@"very easy " atIndex:10];
结果:
2015-08-19 16:48:13.620 Demo[94107:4712065] This is a very easy example. 
   
    [mstr deleteCharactersInRange:NSMakeRange(10,5)];//删除一些字符
结果:2015-08-19 16:51:54.396 Demo[94184:4714267] This is a easy example.   
 
 //查找并删除
    NSRange substr = [mstr rangeOfString:@"example"];             //字符串查找,可以判断字符串中是否有
    if (substr.location != NSNotFound) {
        [mstr deleteCharactersInRange:substr];
    }
    //重新设置字符串
    [mstr setString:@"This is string AAA"];
    //替换字符串
    [mstr replaceCharactersInRange:NSMakeRange(15, 2) withString:@"BBB"];   //从第15个字符串处替换掉后2个字符串
结果:2015-08-19 16:54:14.757 Demo[94216:4715472] This is string BBBA    
 
//查找第一个并替换
    NSString *search = @"This is";
    NSString *replace = @"An example of";
    substr = [mstr rangeOfString:search];//  substr类型为nsrange;
    if (substr.location != NSNotFound) {
        [mstr replaceCharactersInRange:substr withString:replace];      //把第1个遇到的substr替换为replace
        NSLog(@"%@",mstr);
    }

//rangeOfString 前面的参数是要被搜索的字符串,后面的是要搜索的字符

//NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在

   
  //查找全部匹配的,并替换
    search = @"a";
    replace = @"X";
    substr = [mstr rangeOfString:search];
    while (substr.location != NSNotFound) {
        [mstr replaceCharactersInRange:substr withString:replace];
        substr = [mstr rangeOfString:search];
    }

    NSLog(@"%@",mstr);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!