介绍
我们现在开发都是面向对象,面向对象的优点就不在这里介绍了,NSString就是字符串面向对象的产物,一个NSString对象就代表一个字符串。
NSString创建
1.直接创建
NSString *str = @"string";2.格式化的方式
NSString *str = [NSString stringWithFormat:@"My age is %d", 10];NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];3.从文件中读取
// 用来保存错误信息NSError *error = nil;// 读取文件内容NSString *str = [NSString stringWithContentsOfFile:@"/Users/Gavin/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];// 如果有错误信息if (error) { NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);} else { // 如果没有错误信息 NSLog(@"读取成功, 文件内容是:/n%@", str);}4.从URL中读取
// 用来保存错误信息NSError *error = nil;// 创建URL路径NSURL *url = [NSURL URLWithString:@"file:///Users/Gavin/Desktop/test.txt"];// 读取文件内容NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];// 如果有错误信息if (error) { NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);} else { // 如果没有错误信息 NSLog(@"读取成功, 文件内容是:/n%@", str);}NSString储存
储存到文件
NSString *str = @"test";[str writeToFile:@"/Users/gavin/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];储存到URL
[str writeToURL:[NSURL URLWithString:@"/Users/gavin/Desktop/str.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];NSString大小写处理
全部字符转为大写
- (NSString *)uppercaseString;全部字符转为小写
- (NSString *)lowercaseString首字母大写,其他小写
- (NSString *)capitalizedStringNSString比较
//两个字符串的内容相同就返回YES, 否则返回NO- (BOOL)isEqualToString:(NSString *)aString;/* 这个方法可以用来比较两个字符串内容的大小 比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果 NSComparisonResult是一个枚举,有3个值: 如果左侧 > 右侧,返回NSOrderedDescending, 如果左侧 < 右侧,返回NSOrderedAscending, 如果左侧 == 右侧返回NSOrderedSame*/- (NSComparisonResult)compare:(NSString *)string;//忽略大小写进行比较,返回值与compare:一致- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;NSString搜索
//是否以aString开头- (BOOL)hasprefix:(NSString *)aString;//是否以aString结尾- (BOOL)hasSuffix:(NSString *)aString;/* 用来检查字符串内容中是否包含了aString 如果包含, 就返回aString的范围 如果不包含, NSRange的location为NSNotFound, length为0*/- (NSRange)rangeOfString:(NSString *)aString;NSRange
NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;// NSUInteger的定义typedef unsigned int NSUInteger;NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围,NSRange有2个成员: NSUInteger location : 表示该范围的起始位置 NSUInteger length : 表示该范围内的长度
NSString *str = @"gavin.swift";//其中swift//location为:6;//length为:5NSRang创建
//方式1NSRange range;range.location = 6;range.length = 5;//方式2NSRange range = {6, 5};//或者 NSRange range = {.location = 6,.length = 5};//方式3 : 使用NSMakeRange函数NSRange range = NSMakeRange(6, 5);NSString截取和替换
从指定位置from开始(包括指定位置的字符)到尾部
- (NSString *)substringFromIndex:(NSUInteger)from;从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- (NSString *)substringToIndex:(NSUInteger)to;按照所给出的NSRange从字符串中截取子串
- (NSString *)substringWithRange:(NSRange)range;用replacement替换target
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;NSString路径
是否为绝对路径
- (BOOL)isAbsolutePath;获得最后一个目录
- (NSString *)lastPathComponent;删除最后一个目录
- (NSString *)stringByDeletingLastPathComponent;在路径的后面拼接一个目录
- (NSString *)stringByAppendingPathComponent:(NSString *)str;NSString文件拓展名
获得拓展名
- (NSString *)pathExtension;删除尾部的拓展名
- (NSString *)stringByDeletingPathExtension;在尾部添加一个拓展名
- (NSString *)stringByAppendingPathExtension:(NSString *)str;NSString其他用法
返回字符串的长度
- (NSUInteger)length;返回index位置对应的字符
- (unichar)characterAtIndex:(NSUInteger)index;转为基本数据类型
- (double)doubleValue;- (float)floatValue;- (int)intValue;转为C语言中的字符串
- (char *)UTF8String;去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];NSMutableString
NSMutableString是NSString的子类,区别在于NSString是不可变的, 里面的文字内容是不能进行修改的,NSMutableString是可变的, 里面的文字内容可以随时更改,子类可以使用父类所有方法。
NSMutableString常用方法
拼接aString到最后面
- (void)appendString:(NSString *)aString;拼接一段格式化字符串到最后面
- (void)appendFormat:(NSString *)format;删除range范围内的字符串
- (void)deleteCharactersInRange:(NSRange)range;在loc这个位置中插入aString
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;使用aString替换range范围内的字符串
- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;PS
这出来感觉像是中文翻译有木有,NSString的其他方法大家可以再官方文档中找到对应的解释和最新的替代,这里只是摘要和总结。