NSString

来源:互联网 发布:dnf全屏源码 编辑:程序博客网 时间:2024/06/15 22:35

字符串类

字符串

在这里字符串可以分为两种

  • 可变字符串 : NSString(内容及长度不可被修改)
  • 不可变字符串 : NSMutableString(创建后内容还可以进行修改)

可变字符串NSString常用方法

创建一个字符串的方法:

  • 字面量
    可以通过指定的下标获取字符内容
NSString *str =  @"abc";// length是字符串长度NSLog(@"%ld",str.length);// 获取内容NSLog(@"%c",[str characterAtIndex:1]);

运行结果:(网速慢图片上传不了..就直接复制写到代码片里了..)

2015-07-20 17:31:58.469 OC05_NSString[2959:166258] 62015-07-20 17:31:58.470 OC05_NSString[2959:166258] a
  • 通过alloc和init来创建
NSString *str =[[NSString alloc] initWithString:@"abcde"];
  • 通过便利构造器创建
NSString *str = [NSString stringWithString:@"abcdefg"];

注意:用便利构造器和初始化方法创建字符串对象,也能正常使用,但是系统还是更倾向于用字面量的方式来完成对象的创建

从指定下标开始打印字符串

substringFromIndex:(NSUInteger)

NSString *str = @"abcdefghijklmnopqrstuvwxyz";NSLog(@"%@",[str substringFromIndex:3]);

打印结果:

2015-07-20 17:41:39.860 OC05_NSString[3003:172543] defghijklmnopqrstuvwxyz

从头打印至指定下标

substringToIndex:(NSUInteger)

NSString *str = @"abcdefghijklmnopqrstuvwxyz";NSLog(@"%@",[str substringToIndex:4])

打印结果:

2015-07-20 17:44:47.618 OC05_NSString[3016:174257] abcd

打印范围内的字符串

substringWithRange:(NSRange)
其中,NSRange是一个结构体,提供了两个成员变量,一个是起始位置,另一个是长度

NSRange range = {3 , 7};NSLog(@"%@",[str substringWithRange:range]);// 打印范围的范围还可以使用NSMakeRange(location , length),指定字符串的范围NSLog(@"%@",[str substringWithRange:NSMakeRange(3, 7)]);

打印结果:

2015-07-20 17:50:32.407 OC05_NSString[3090:177330] defghij2015-07-20 17:50:32.408 OC05_NSString[3090:177330] defghij

判断两个字符串的内容是否相等

isEqualToString:(NSString *)

NSString *str1 = @"abcdefg";NSString *str2 = @"adasdasdasd";NSLog(@"%d",[str1 isEqualToString:str2]);

打印结果:

2015-07-20 18:05:44.857 OC05_NSString[3209:184379] 0

注意:

  • 因为判断的类型为BOOL所以结果为真的时候就是1,假的时候就是0
  • if (str1 == str2) { }这种比较方法是比较的两个字符串的地址是否相等.

判断是否有前缀.后缀

前缀:hasPrefix:(NSString *)
后缀:hasSuffix:(NSString *)

NSString *prefix = "abc";NSString *suffix = "xyz";NSString *str = "abcdefghijklmnopqrstuvwxyz";NSLog(@"%@",[str hasPrefix:prefix]);NSLog(@"%@",[str hasSuffix:suffix]);

打印结果:

2015-07-20 18:16:27.661 OC05_NSString[3252:189847] 12015-07-20 18:16:27.662 OC05_NSString[3252:189847] 1

同isEqualToString,都是BOOL型,所以打印结果都是1或者0

把字符串变成基本数据类型

@property (readonly) NSInteger integerValue

NSString *strNum = @"12345";NSInteger num = [strNum integerValue];NSLog(@"%ld",num);

打印结果:

2015-07-20 18:57:40.846 OC05_NSString[3314:200413] 12345

注意:如果在字符串中变成@”1234p5”;即,中间有字母,字符等,只转换字母或者字符前面的内容

把任意类型转换成字符串类型(可以进行拼接)

stringWithFormat:(NSString *)

CGFloat a = 3.14;NSInteger b = 100;NSString *str = [NSString stringWithFormat:@"%g , %ld",a, b];NSLog(@"%@",str);

打印结果:

2015-07-20 19:02:17.544 OC05_NSString[3362:203392] 3.14 , 100

字符串转化大小写(首字母)

  • uppercaseString 字符串全转化成大写
NSString *str = @"Asd qwe zxc v";NSLog(@"%@",str.uppercaseString);

打印结果

2015-07-20 19:09:48.295 OC05_NSString[3386:207543] ASD QWE ZXC V
  • lowercaseString 字符串全转化成小写
NSString *str = @"Asd qwe zxc v";NSLog(@"%@",str.lowercaseString);

打印结果:

2015-07-20 19:09:48.296 OC05_NSString[3386:207543] asd qwe zxc v
  • capitalzedString 字符串首字母大写
NSString *str = @"Asd qwe zxc v";NSLog(@"%@",str.capitalizedString);

打印结果:

2015-07-20 19:09:48.296 OC05_NSString[3386:207543] Asd Qwe Zxc V

比较两个字符串

compare:(NSString *)
1.

NSString *str1 = @"asd";NSString *str2 = @"asd";NSLog(@"%ld",[str2 compare:str1]);

2.

NSString *str1 = @"asd";NSString *str2 = @"ass";NSLog(@"%ld",[str2 compare:str1]);

3.

NSString *str1 = @"ass";NSString *str2 = @"asd";NSLog(@"%ld",[str2 compare:str1]);

1的打印结果

2015-07-20 19:12:17.003 OC05_NSString[3411:209169] 0

2的打印结果

2015-07-20 19:12:57.967 OC05_NSString[3424:209537] 1

3的打印结果

2015-07-20 19:13:37.078 OC05_NSString[3437:209905] -1

注意:对应只有三个结果,一个是ASC升序,结果是 -1 ,一个是same相同,结果是 0 , 降序DESC, 结果是 1

字符串的拼接

stringByAppendingString:(NSString *)

NSString *str1 = @"shangshuai";NSString *str2 = @" doubi";NSString *newStr = [str1 stringByAppendingString:str2];NSLog(@"%@", newStr);

打印结果

2015-07-20 19:17:06.248 OC05_NSString[3462:211948] shangshuai doubi

注意:前面说过用stringWithFormat可以进行拼接

字符串的替换

stringByReplacingOccurrencesOfString:(NSString*) withString:(NSString *)
其中第一个参数是字符串原有的部分,第二个参数是要替换的内容

NSString *str = @"你好 , 再见";NSString *str2 = @"拜拜";NSString *strNew = [str stringByReplacingOccurrencesOfString:@"再见"withString:str2];NSLog(@"%@",strNew);

打印结果

2015-07-20 19:18:21.416 OC05_NSString[3489:212562] 你好 , 拜拜

可变字符串NSMutableString

可变字符串是NSString的子类
注意:使用字面量的方式创建的是不可变字符串,只能拿指针来接受

NSMutableString *str = @"abc";

创建可变字符串的方式与创建不可变字符串方式类似

NSMutableString *str = [[NSMutableString alloc] initWithString:@"abc"];NSLog(@"%@",str);NSMutableString *str1 = [NSMutableString stringWithString:@"def"];NSLog(@"%@",str1);

插入内容

insertString:(NSString *) atIndex:(NSUInteger)
atIndex指的是从这个下标后插入

NSMutableString *str = [NSMutableString stringWithString:@"hello  hello  hello  hello"];[str insertString:@"hi" atIndex:6];NSLog(@"%@",str);

打印结果:

2015-07-20 19:27:25.239 OC05_NSString[3559:217704] hello hi hello  hello  hello

范围的替换

replaceCharactersInRange:(NSRange) withString:(NSString *)

把范围内的内容进行替换,前面的参数是范围,后面的是要替换进去的内容

NSMutableString *str = [NSMutableString stringWithString:@"hello  hello  hello  hello"];[str replaceCharactersInRange:NSMakeRange(0, 5) withString:@"yohoo"];NSLog(@"%@",str);

打印结果:

2015-07-20 19:32:01.002 OC05_NSString[3593:220006] yohoo  hello  hello  hello

全部替换

setString:(NSString *)

NSMutableString *str = [NSMutableString stringWithString:@"hello  hello  hello  hello"];[str setString:@"asd"];NSLog(@"%@",str);

打印结果:

2015-07-20 19:34:58.182 OC05_NSString[3617:221912] asd

在字符串的后面进行拼接

appendString:(NSString *)

NSMutableString *str = [NSMutableString stringWithString:@"hello  hello  hello  hello"];[str appendString:@" aaaa"];NSLog(@"%@",str);

打印结果:

2015-07-20 19:36:13.313 OC05_NSString[3643:222755] hello  hello  hello  hello aaaa

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

代码练习题:检测图片的格式,如果是png格式的,在将其改成jpg,如果是jpg,在后面拼接jpg

不可变字符串:

 NSString *string = [NSString stringWithFormat:@"oishhlizx.png"];    if ([string hasSuffix:@"png"]) {        NSInteger length = [string length];        NSRange range = NSMakeRange(length - 3, 3);        string = [string stringByReplacingCharactersInRange:range withString:@"jpg"];    }     else {        string = [string stringByAppendingString:@".jpg"];    }    NSLog(@"%@", string);

可变字符串

NSMutableString *string1 = [NSMutableString stringWithFormat:@"asdasd.png"];    if ([string1 hasSuffix:@"png"]) {        NSInteger length = [string1 length];        NSRange range = NSMakeRange(length - 3, 3);        [string1 replaceCharactersInRange:range withString:@"jpg"];    }     else {        [string1 appendFormat:@".jpg"];    }    NSLog(@"%@", string1);
1 0
原创粉丝点击