1.不可变字符串:NSString
字符串使用方法:
1>直接赋值
NSString *s1 = @"I am jack"; // 常用
2>调用initWithString方法
NSString *s2 = [[NSString alloc]initWithString:@"I am jack"]; //调用对象方法initWithString
3>占位符,拼接方法
NSString *str = @"jack";
NSString *s3 = [[NSString alloc] initWithFormat:@"I am %@",str];//占位符,拼接字符串
4>C语言字符串和OC字符串的转换
//C语言字符串-->OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"I am jack"]; // 后面是C语言字符串
NSLog(@"%@",s4); // OC输出自动换行
//OC字符串-->C语言字符串
const char *cc = [s4 UTF8String]; // 调用对象方法转换成C语言字符串
printf("%s\n",cc); // 注意和OC输出的不同
5>读取文件中的字符串
//encoding:NSUTF8StringEncoding转码方式,遇到中文就用这种转码方式
NSString *s5 = [[NSString alloc]initWithContentsOfFile:@"/Users/lidengke/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; //文件的路径:/Users/lidengke/Desktop/1.txt
NSLog(@"%@",s5);
6>读取文件中字符串的另一种方法
URL:资源路径
*http:// 网络资源协议头,使用时候需要链接网络
*ftp:// 服务器资源协议头
*file:// 本地资源协议头
NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"]; //URL设置为百度网页,读取网页文件
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",s6);
7>字符串写入文件
atomically:YES如中途写入失败,就不会继续写入
所指的文件路径必须的文件必须已存在
NSString *str = @"I am jack"; //需要写入的字符串
[str writeToFile:@"/Users/lidengke/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; // 1.txt已存在,写方法不需要返回值
2.可变的字符串:NSmutableString
//创建字符串
NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"I am"];
//拼接字符串,接s1后面
[s1 appendString:@" jack"];
//输出
NSLog(@"%@",s1); //s1的指发生了变化,已被修改
与NSString的stringByAppendingString方法比较:
//创建字符串
NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"I am"];
//拼接字符串,接s1后面
[s1 appendString:@" jack"];
//输出
NSLog(@"%@",s1); //s1的指发生了变化,已被修改
// 赋值s2 = I am
NSString *s2 = [NSString stringWithFormat:@"I am"];
NSLog(@"%@",s2);
// s2后面拼接
NSString *s3 = [s2 stringByAppendingString:@" jack"];
//输出s3
NSLog(@"%@",s3);
输出结果:
s1 = I am jack
s2 = I am
s3 = I am jack
可以看出s2并没有发生变化,利用NSString的stringByAppendingString方法会有一个NSString类型的返回值,不是改变该对象的本身的值
一下是练习过程中所有代码
一下是练习过程中所有代码
#import <Foundation/Foundation.h>
int main() {
//NSString :不可变字符串
//NSmutableString :可变字符串
//NSString *s1 = @"I am jack"; //常用
//NSString *s2 = [[NSString alloc]initWithString:@"I am jack"];
//NSString *str = @"jack";
//NSString *s3 = [[NSString alloc] initWithFormat:@"I am %@",str];//占位符,拼接字符串
//C语言字符串-->OC字符串
//NSString *s4 = [[NSString alloc] initWithUTF8String:"I am jack"]; // 后面是C语言字符串
//NSLog(@"%@",s4); // OC输出自动换行
//OC字符串-->C语言字符串
//const char *cc = [s4 UTF8String]; // 调用对象方法转换成C语言字符串
//printf("%s\n",cc); // 注意和OC输出的不同
//NSLog(@"location=%ld,length=%ld",range.location,range.length);
//encoding:NSUTF8StringEncoding转码方式,遇到中文就用这种转码方式
// NSString *s5 = [[NSString alloc]initWithContentsOfFile:@"/Users/lidengke/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; //文件的路径:/Users/lidengke/Desktop/1.txt
//NSLog(@"%@",s5);
//NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"]; //URL设置为百度网页,读取网页文件
//NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
//NSLog(@"%@",s6);
//NSString *str = @"I am jack"; //需要写入的字符串
//[str writeToFile:@"/Users/lidengke/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; // 1.txt已存在,写方法不需要返回值
//创建字符串
NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"I am"];
//拼接字符串,接s1后面
[s1 appendString:@" jack"];
//输出
NSLog(@"s1 = %@",s1); //s1的指发生了变化,已被修改
// 赋值s2 = I am
NSString *s2 = [NSString stringWithFormat:@"I am"];
NSLog(@"s2 = %@",s2);
// s2后面拼接
NSString *s3 = [s2 stringByAppendingString:@" jack"];
//输出s3
NSLog(@"s3 = %@",s3);
return 0;
}
以上是对字所学符串的总结,希望大家多多给指导意见