//创建可变字符串
NSMutableString *str = [NSMutableString stringWithString:@"abc"];
NSLog(@"原先的str-->%@",str);
//在字符串str后面接着添加字符串
[str appendString:@"def"];
NSLog(@"修改后的str-->%@",str);
输出的结果:
2015-03-12 23:16:56.055 博客1[3963:43666] 原先的str–>abc
2015-03-12 23:16:56.055 博客1[3963:43666] 修改后的str–>abcdef
以上讲解的就是可变字符串的特性,可以在原先的字符串后面接着添加字符串。而不可变字符串NSString就不能像以上那么灵活地更改字符串的内容。若NSString要实现以上NSMutableString的功能,可以用以下代码来实现:
NSString *str = @"abc";
NSLog(@"原先的str-->%@",str);
str = [NSString stringWithFormat:@"%@%@",str,@"def"];
NSLog(@"改变后的str-->%@",str);
输出结果:
2015-03-12 23:30:37.526 博客1[4395:49240] 原先的str–>abc
2015-03-12 23:30:37.527 博客1[4395:49240] 改变后的str–>abcdef
以上在一个字符串后面拼接另一个字符串,用NSString和NSMutableString都很容易实现,若在一个字符串的任意位置插入一个字符串呢?用可变字符串NSMutableString很容易实现,而用不可变字符串NSString并没有那么简单,可能需要自己写个算法来实现。
NSMutableString *Str = [[NSMutableString alloc] initWithString:@"This a NSMutableString"];
NSLog(@"原先的str-->:%@",Str);
[Str insertString:@"is " atIndex:5];
NSLog(@"插入字符串后的str-->:%@",Str);
输出结果:
2015-03-13 00:03:49.239 博客1[5443:62167] 原先的str–>:This a NSMutableString
2015-03-13 00:03:49.240 博客1[5443:62167] 插入字符串后的str–>:This is a NSMutableString
NSString *str1 = [[NSString alloc] initWithString:@"chenfanfang"];
NSString *str2 = [NSString stringWithString:@"chenfanfang"];
NSString *str3 = @"chenfanfang";//推荐使用这种方法,xcode特性
NSString *str4 = [[NSString alloc] initWithFormat:@"chenfanfang"];
NSString *str5 = [NSString stringWithFormat:@"chenfanfang"];
NSString *str6 = [NSString stringWithFormat:@"chenfanfang's age = %d",10];
NSLog(@"str1-->%@",str1);
NSLog(@"str2-->%@",str2);
NSLog(@"str3-->%@",str3);
NSLog(@"str4-->%@",str4);
NSLog(@"str5-->%@",str5);
NSLog(@"str6-->%@",str6);
输出结果
2015-03-12 21:56:47.933 博客1[1387:12193] str1–>chenfanfang
2015-03-12 21:56:47.934 博客1[1387:12193] str2–>chenfanfang
2015-03-12 21:56:47.934 博客1[1387:12193] str3–>chenfanfang
2015-03-12 21:56:47.935 博客1[1387:12193] str4–>chenfanfang
2015-03-12 21:56:47.935 博客1[1387:12193] str5–>chenfanfang
2015-03-12 21:56:47.935 博客1[1387:12193] str6–>chenfanfang’s age = 10
NSMutableString *str1 = [[NSMutableString alloc] initWithString:@"chenfanfang"];
NSMutableString *str2 = [NSMutableString stringWithString:@"chenfanfang"];
NSMutableString *str3 = @"chenfanfang";//推荐使用这种方法,xcode特性
NSMutableString *str4 = [[NSMutableString alloc] initWithFormat:@"chenfanfang"];
NSMutableString *str5 = [NSMutableString stringWithFormat:@"chenfanfang"];
NSMutableString *str6 = [NSMutableString stringWithFormat:@"chenfanfang's age = %d",10];
NSLog(@"str1-->%@",str1);
NSLog(@"str2-->%@",str2);
NSLog(@"str3-->%@",str3);
NSLog(@"str4-->%@",str4);
NSLog(@"str5-->%@",str5);
NSLog(@"str6-->%@",str6);
输出结果:
2015-03-13 10:35:15.457 博客1[754:7942] str1–>chenfanfang
2015-03-13 10:35:15.458 博客1[754:7942] str2–>chenfanfang
2015-03-13 10:35:15.458 博客1[754:7942] str3–>chenfanfang
2015-03-13 10:35:15.458 博客1[754:7942] str4–>chenfanfang
2015-03-13 10:35:15.458 博客1[754:7942] str5–>chenfanfang
2015-03-13 10:35:15.458 博客1[754:7942] str6–>chenfanfang’s age = 10
NSRange其实就是个结构体,官方定义为
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
//location代表:下标(比如字符串的下标)
//length代表:长度
NSString *str1 = @"Good Good Study,Day Day Up";
NSString *str2 = @"Study";
NSRange range = [str1 rangeOfString:str2];
NSLog(@"字符串str2在字符串str1中的位置:location=%d length=%d",range.location,range.length);
输出结果:
2015-03-12 23:45:39.633 博客1[4870:55151] 字符串str2在字符串str1中的位置:location=10 length=5。
NSString *str = @"abcdef";
int length = [str length];
NSLog(@"字符串str的长度为:%d",length);
输出结果为:
2015-03-13 10:40:25.598 博客1[928:10206] 字符串str的长度为:6
[str length]对应的点语法为 str.length,代码如下
NSString *str = @"abcdef";
int length = str.length;
NSLog(@"字符串str的长度为:%d",length);
输出结果为:
2015-03-13 10:42:34.179 博客1[1000:11240] 字符串str的长度为:6
NSString *str = @"abcdef";
for (int i = 0; i < str.length; i++) {
char c1 = [str characterAtIndex:i];
NSLog(@"%c",c1);
}
输出结果:
2015-03-13 10:46:31.069 博客1[1129:12672] a
2015-03-13 10:46:31.070 博客1[1129:12672] b
2015-03-13 10:46:31.070 博客1[1129:12672] c
2015-03-13 10:46:31.071 博客1[1129:12672] d
2015-03-13 10:46:31.071 博客1[1129:12672] e
2015-03-13 10:46:31.071 博客1[1129:12672] f
NSString *str = @"chenfanfang lov objective-c";
NSLog(@"原先的str-->%@",str);
//将字符串str中的lov替换成love
str = [str stringByReplacingOccurrencesOfString:@"lov" withString:@"love"];
NSLog(@"替换后的str-->%@",str);
输出结果:
2015-03-13 11:03:48.006 博客1[1756:19462] 原先的str–>chenfanfang lov objective-c
2015-03-13 11:03:48.008 博客1[1756:19462] 替换后的str–>chenfanfang love objective-c
比如我电脑中有名称为 chenfanfang.txt文件,文件中的内容为:chenfanfang love objective-c 现在,我们要求取出chenfanfang.txt文件的内容,并且赋值给字符串
NSString *path = @"/Users/admin/Desktop/chenfanfang.txt";
//encoding:是字符编码的意思,若有中文,则用NSUTF8StringEncoding
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",content);
输出结果:
2015-03-13 11:10:57.566 博客1[1975:22457] chenfanfang love objective-c
NSString *path = @"/Users/admin/Desktop/chenfanfang.txt";
NSString *contents = @"love objective-c";
//将字符串contents中的内容写入到chenfanfang.txt这个文件
[contents writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];