OC当中常用的字符串方法

来源:互联网 发布:扫号软件 编辑:程序博客网 时间:2024/05/16 06:40

不可变字符串

创建不可变字符串

指令:NSString *student = @"杨林fnidsanifsnfiads";(字面量方法)


创建空字符串

指令:NSString *stu = [[NSString alloc] init];



1:获取字符串长度

指令NSLog(@"%ld", student.length);



2:获取指定位置的字符

指令:NSLog(@"%c",[student characterAtIndex:1]);

注意:如果在指定位置上的字符是汉字的话那么应该用%C(大写的C)来接收



3:截取字符串


(1)向后截取

指令: [str substringFromIndex:5];

注意:从地址为5的地方开始往后截取,直到最后(包括下标位置)


(2)向前截取

指令: [str substringToIndex:5];

注意:从地址为5的地方开始往前截取,直到最前(不包括下标)


(3)截取一段

先定义:NSRange range ={3, 7};(从下标为3的位置向后截取7个长度的字符)

指令:[str substringWithRange:range]

或者:[str substringWithRange:NSMakeRange(3, 7)]

注意:两种方法效果一样,第二种方法不用定义range直接填3 7;



4:判断两个字符串内容是否一致

指令:[str1 isEqualToString:str2].

注意:该指令的头文件是BOOL类型,所以返回值只有1(YES)和0(NO),所以需要用%d来接收,

if (str1 == str2)比较两个字符串的地址是否相同;



5:判断字符串种是否有前缀后缀


(1)前缀

先定义:NSString *prefix = @"li";

指令:NSLog(@"%d", [str hasPrefix:prefix]);


(2)后缀

先定义:NSString *suffix = @"an"

指令:NSLog(@"%d", [str hasSuffix:suffix]);

注意:该指令的头文件是BOOL类型,所以返回值只有1(YES)和0(NO),所以需要用%d来接收,



6:把字符串转换成基本数据类型

指令:NSInteger num = [strNum(字符型) integerValue];



7:字符串拼接

指令:NSString *str =[NSString stringWithFormat:@"%ld(整形), %g(浮点型) %@(字符串)", a, g, @"刘山山"];

注意:该指令的实质是什么类型的都可以拼在一起(就是把任意类型转换成字符串类型,可以进行拼接)



8:大小写转换

(1)小写变大写

指令:NSLog(@"%@", str.uppercaseString);


(2)大写变小写

指令:NSLog(@"%@", str.lowercaseString);


(3)首字母变大写

指令:NSLog(@"%@", str.capitalizedString);

注意:让首字母变成大写(使用此方法时最好加空格,因为空格之后的第一个字母自动变成大写,原字符串当中的大写,但是前面没有空格的字母,均变成小写)

例如NSString *str = @"liuSHAN shan";

       NSLog(@"%@", str.uppercaseString);

运行的结果为"LiuShan Shan"



9:字符串的比较

指令:NSLog(@"%ld", [str compare:newStr])

注意:该指令的运行之后只能得到1 -1 0三种结果, -1ASC升序 0same相同结果是0, 1DESC降序;



10:字符串的拼接

指令:NSString *newStr = [str1 stringByAppendingString:str];(把str拼接在str1之后)



11:字符串替换

指令:[str stringByReplacingOccurrencesOfString:@"刘山山" withString:@"杨林"]

注意:把刘山山全部替换成杨林,有多少个替换多少个


后补:

1:判断字符串是否包含指定字符串,返回位置和长度

指令:NSRange range = [@"123456" rangeOfString:@"456"];

    NSLog(@"%@", NSStringFromRange(range))

结果:{3, 3}


2:指定范围进行搜索

指令:NSRange range = NSMakeRange(0,9);

    range = [@"123456456qweasasd456"rangeOfString:@"456"options:NSBackwardsSearchrange:range];

   NSLog(@"%@",NSStringFromRange(range));

结果:{6, 3}

注意:在下标为6的位置出现456,并且长度为3


可变字符串

注意:NSMutableString:可变字符串,他是NSString的子类



创建方式

指令:NSMutableString *str = [[NSMutableString alloc] initWithString:@"腾飞"];

或者:NSMutableString *str1 =[NSMutableString stringWithString:@"商帅"];(便利构造器)

注意:使用字面量的方式创建的石不可变字符串,只能拿不可变的指针来接受,所以NSMutableString *str = @"杨凌";//错误因为"杨凌"不可变



12:字符串插入

指令:[str insertString:@"商帅" atIndex:5];

注意:(在str中下标为5的位置插入商帅二字,值是插入没有替换);



13字符串替换:

(1)范围替换

先定义:NSRange range = {3, 5};

指令:[str replaceCharactersInRange:range withString:@"WODE"];

注意:range{3, 5} 意思为从地址为3的地方向后的5个字符被WODE所替换



(2)全部替换

指令:[str setString:@"1"];

注意:"相当于重新赋值



14:字符串拼接(可变字符串)

指令:[str appendFormat:@"WODE"];(不可变字符串)

指令:[str1stringByAppendingString:@"WODE"];(可变字符串)

注意:这是可变字符串,该指令不能用在不可变字符串当中在str后面拼接上WODE



15:删除字符串:

指令:[strdeleteCharactersInRange:NSMakeRange(3,2)];



可变字符串在方法上一般都是没有返回值的,都是对自身的内容进行修改,在访问的时候字符换已经发生变化,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *

(自己):不可变就是必须得用一个新的字符串来接收产生的新的字符串,而可变的方法是改变原有的字符串

    

























0 0
原创粉丝点击