ios开发之字符串操作(三)
来源:互联网 发布:lacoste淘宝是正品吗 编辑:程序博客网 时间:2024/05/19 09:15
ios提供的字符串操作中有两个操作是最基本的。
获取字符串长度
@property (readonly) NSUInteger length;
获取下标对应的字符
- (unichar)characterAtIndex:(NSUInteger)index;
NSString *str=@"你好,世界!";NSLog(@"length %lu",[str length]);unichar ch=[str characterAtIndex:1];NSLog(@"ch = %C",ch);
输出
2017-03-15 04:03:14.430 objc-base[2000:339489] length 62017-03-15 04:03:14.431 objc-base[2000:339489] ch = 好
其他许多字符串操作都是建立在以上两个操作之上的。
获取字符序列
获取字符串区间内的字符序列
- (void)getCharacters:(unichar *)buffer range:(NSRange)range;
获取字符串的字符序列
- (void)getCharacters:(unichar *)buffer;
NSString *str=@"你好,世界!";unichar chs[6];[str getCharacters:chs range:NSMakeRange(3, 2)];NSLog(@"%C%C",chs[0],chs[1]);[str getCharacters:chs];NSLog(@"%C%C%C%C%C%C",chs[0],chs[1],chs[2],chs[3],chs[4],chs[5]);
输出
2017-03-15 04:15:28.138 objc-base[2046:347738] 世界2017-03-15 04:15:28.138 objc-base[2046:347738] 你好,世界!
截取字符串
截取字符串区间内的字符串
- (NSString *)substringWithRange:(NSRange)range;
截取下标开始的字符串
- (NSString *)substringFromIndex:(NSUInteger)from;
截取下标结束的字符串(不包含下标)
- (NSString *)substringToIndex:(NSUInteger)to;
NSString *str=@"你好,世界!";NSString *str1=[str substringWithRange:NSMakeRange(1, 3)];NSLog(@"str1 = %@",str1);NSString *str2=[str substringFromIndex:1];NSLog(@"str2 = %@",str2);NSString *str3=[str substringToIndex:3];NSLog(@"str3 = %@",str3);
输出
2017-03-15 04:24:10.676 objc-base[2095:353965] str1 = 好,世2017-03-15 04:24:10.678 objc-base[2095:353965] str2 = 好,世界!2017-03-15 04:24:10.679 objc-base[2095:353965] str3 = 你好,
添加字符串
添加字符串
- (NSString *)stringByAppendingString:(NSString *)aString;
添加格式化字符串
- (NSString *)stringByAppendingFormat:(NSString *)format, ...
NSString *str=@"你好,世界!";NSString *str1=[str stringByAppendingString:@"hello,world!"];NSString *str2=[str stringByAppendingFormat:@"%@",@"hello,world!"];NSLog(@"str1 = %@ str2 = %@",str1,str2);
输出
2017-03-15 04:32:31.090 objc-base[2120:359387] str1 = 你好,世界!hello,world! str2 = 你好,世界!hello,world!
字符串是否相等
比较字符串是否相等
- (BOOL)isEqualToString:(NSString *)aString;
是否以字符串开头
- (BOOL)hasPrefix:(NSString *)str;
是否以字符串结尾
- (BOOL)hasSuffix:(NSString *)str;
NSString *str=@"你好,世界!";NSString *str1=@"你好,世界!";NSLog(@"%d",[str isEqualToString:str1]);NSString *str2=@"你好";NSLog(@"%d",[str hasPrefix:str2]);NSString *str3=@"世界!";NSLog(@"%d",[str hasSuffix:str3]);
输出
2017-03-15 04:47:08.746 objc-base[2154:368999] 12017-03-15 04:47:08.747 objc-base[2154:368999] 12017-03-15 04:47:08.748 objc-base[2154:368999] 1
比较字符串
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(nullable id)locale;
比较两个字符串的大小。返回类型为NSComparisonResult
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
若前一个字符串小于后一个字符串则返回-1(NSOrderedAscending ),若相等则返回0(NSOrderedSame),若大于则返回1(NSOrderedDescending)。
参数string指定比较的字符串。参数rangeOfReceiverToCompare 指定比较的区间。参数mask 指定比较的方式,其类型为NSStringCompareOptions.
typedef NS_OPTIONS(NSUInteger, NSStringCompareOptions) { NSCaseInsensitiveSearch = 1, NSLiteralSearch = 2, NSBackwardsSearch = 4, NSAnchoredSearch = 8, NSNumericSearch = 64, NSDiacriticInsensitiveSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 128, NSWidthInsensitiveSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 256, NSForcedOrderingSearch NS_ENUM_AVAILABLE(10_5, 2_0) = 512, NSRegularExpressionSearch NS_ENUM_AVAILABLE(10_7, 3_2) = 1024};
compare方法用到了以下项
NSCaseInsensitiveSearch//不区分大小写比较 NSLiteralSearch//进行完全比较,区分大小写NSNumericSearch//按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txtNSDiacriticInsensitiveSearch//忽略 "-" 符号的比较NSWidthInsensitiveSearch//忽略字符串的长度,比较出结果NSForcedOrderingSearch//忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending
它们都可以用逻辑“或”运算符组合在一起。
参数locale用于本地化。
其他比较方法
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
- (NSComparisonResult)compare:(NSString *)string;
NSString *str1=@"hello,world!";NSString *str2=@"HELLO,WORLD!";NSLog(@"ret = %lu",[str1 compare:str2]);NSLog(@"ret = %lu",[str1 compare:str2 options:NSCaseInsensitiveSearch]);
输出
2017-03-18 03:36:09.550 objc-base[2546:409402] ret = 12017-03-18 03:36:09.551 objc-base[2546:409402] ret = 0
不区分大小写比较字符串
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
本地化比较字符串
- (NSComparisonResult)localizedCompare:(NSString *)string;
本地化+不区分大小写比较字符串
- (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string;
本地化+标准比较字符串
- (NSComparisonResult)localizedStandardCompare:(NSString *)string
是否包含字符串
判断是否包含字符串
- (BOOL)containsString:(NSString *)str
判断是否包含本地化+不区分大小的字符串
- (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str
判断是否包含本地化的字符串
- (BOOL)localizedStandardContainsString:(NSString *)str
NSString *str1=@"hello,world!";NSString *str2=@"HELLO,WORLD!";NSLog(@"ret = %d",[str1 containsString:str2]);NSLog(@"ret = %d",[str1 localizedCaseInsensitiveContainsString:str2]);
输出
2017-03-18 03:48:52.647 objc-base[2591:417644] ret = 02017-03-18 03:48:52.648 objc-base[2591:417644] ret = 1
搜索字符串
搜索字符集中的字符
- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
参数searchSet指定字符集,参数rangeOfReceiverToSearch指定搜索的区间。参数mask指定搜索的方式
可能用到以下选项
NSBackwardsSearch 由后向前搜索
其他搜索字符集方法
- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask;
- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet;
搜索字符串
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(nullable NSLocale *)locale
参数searchString是搜索的字符串,参数rangeOfReceiverToSearch是搜索的区间,参数locale用于本地化,参数mask是搜索的方式。其类型是NSStringCompareOptions,其可能值为
NSCaseInsensitiveSearch//不区分大小写比较 NSLiteralSearch//进行完全比较,区分大小写NSBackwardsSearch//从后向前搜索NSAnchoredSearch//只考虑搜索的起始点(单独使用)或终止点(当与 NSBackwardsSearch 结合使用时)。//这个方法可以用来检查前缀或者后缀,以及大小写不敏感(case-insensitive)//或者音调不敏感(diacritic-insensitive)的比较。NSRegularExpressionSearch//使用正则表达式搜索
其他搜索方法
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
- (NSRange)rangeOfString:(NSString *)searchString;
本地化+标准搜索字符串
- (NSRange)localizedStandardRangeOfString:(NSString *)str
拆分字符串
根据字符集字符拆分字符串
- (NSArray<NSString *> *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
根据字符串查分字符串
- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
NSString *str=@";hello;world";NSArray *arr=[str componentsSeparatedByString:@";"];NSLog(@"%@",arr);NSArray *arr2=[str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"o"]];NSLog(@"%@",arr2);
输出
2017-03-19 01:02:36.327 objc-base[2888:476301] ( "", hello, world)2017-03-19 01:02:36.329 objc-base[2888:476301] ( ";hell", ";w", rld)
替换字符串
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange
替换所有字符串。
参数target是要替换的字符串,参数replacement是替换的字符串,searchRange是搜索的区间。options指定搜索字符串的方式。其可能选项为
NSCaseInsensitiveSearch//不区分大小写比较 NSLiteralSearch//进行完全比较,区分大小写NSAnchoredSearch//只考虑搜索的起始点(单独使用)或终止点(当与 NSBackwardsSearch 结合使用时)。//这个方法可以用来检查前缀或者后缀,以及大小写不敏感(case-insensitive)//或者音调不敏感(diacritic-insensitive)的比较。NSRegularExpressionSearch//使用正则表达式搜索
其他替换方法
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
替换区间内的字符串
- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement
参数range 为替换的区间。参数replacement为替换的字符串。
去除两端字符
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set;
参数set指定字符集。
NSCharacterSet *set=[NSCharacterSet characterSetWithCharactersInString:@"{}|"];NSString *str=@"{hello}|,|{world}";NSString *str2=[str stringByTrimmingCharactersInSet:set];NSLog(@"str = %@",str2);
输出
2017-03-23 04:01:27.351 objc-base[3862:678550] str = hello}|,|{world
填充字符串
- (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex;
参数newLength为填充后的字符串长度。参数padString为填充的字符串。参数padIndex为填充字符串开始的位置,第一次填充时使用。
NSString *str=@"hello,";NSString *str1=[str stringByPaddingToLength:30 withString:@"world" startingAtIndex:2];NSLog(@"str = %@",str1);
输出
2017-03-23 04:58:57.463 objc-base[3930:712084] str = hello,rldworldworldworldworldw
转为大写字符串
@property (readonly, copy) NSString *uppercaseString;
转为本地化大写字符串
@property (readonly, copy) NSString *localizedUppercaseString
转为地区化大写字符串
- (NSString *)uppercaseStringWithLocale:(nullable NSLocale *)locale
NSString *str=@"hello WORLD";NSLog(@"str = %@",[str uppercaseString]);NSLog(@"str = %@",[str localizedUppercaseString]);NSLog(@"str = %@",[str uppercaseStringWithLocale:[NSLocale currentLocale]]);
输出
2017-03-19 01:36:15.529 objc-base[2939:496252] str = HELLO WORLD2017-03-19 01:36:15.531 objc-base[2939:496252] str = HELLO WORLD2017-03-19 01:36:15.532 objc-base[2939:496252] str = HELLO WORLD
转为小写字符串
@property (readonly, copy) NSString *lowercaseString;
转为本地化小写字符串
@property (readonly, copy) NSString *localizedLowercaseString
转为地区化小写字符串
- (NSString *)lowercaseStringWithLocale:(nullable NSLocale *)locale
NSString *str=@"hello WORLD";NSLog(@"str = %@",[str lowercaseString]);NSLog(@"str = %@",[str localizedLowercaseString]);NSLog(@"str = %@",[str lowercaseStringWithLocale:[NSLocale currentLocale]]);
输出
2017-03-19 01:37:47.769 objc-base[2957:497549] str = hello world2017-03-19 01:37:47.771 objc-base[2957:497549] str = hello world2017-03-19 01:37:47.772 objc-base[2957:497549] str = hello world
转为首字母大写字符串
@property (readonly, copy) NSString *capitalizedString;
转为本地化首字母大写字符串
@property (readonly, copy) NSString *localizedCapitalizedString
转为地区化首字母大写字符串
- (NSString *)capitalizedStringWithLocale:(nullable NSLocale *)locale
NSString *str=@"hello WORLD";NSLog(@"str = %@",[str capitalizedString]);NSLog(@"str = %@",[str localizedCapitalizedString]);NSLog(@"str = %@",[str capitalizedStringWithLocale:[NSLocale currentLocale]]);
输出
2017-03-19 01:39:16.674 objc-base[2978:498870] str = Hello World2017-03-19 01:39:16.676 objc-base[2978:498870] str = Hello World2017-03-19 01:39:16.677 objc-base[2978:498870] str = Hello World
返回相同的前缀
- (NSString *)commonPrefixWithString:(NSString *)str options:(NSStringCompareOptions)mask;
参数str是操作的字符串,参数mask是比较字符串的方式,其可能选项有
NSCaseInsensitiveSearch//不区分大小写比较 NSLiteralSearch//进行完全比较,区分大小写
NSString *str1=@"hello,world!";NSString *str2=@"hello,WORLD!";NSLog(@"%@",[str1 commonPrefixWithString:str2 options:0]);NSLog(@"%@",[str1 commonPrefixWithString:str2 options:NSCaseInsensitiveSearch]);
输出
2017-03-20 05:17:55.227 objc-base[3295:572367] hello,2017-03-20 05:17:55.230 objc-base[3295:572367] hello,world!
返回数值
@property (readonly) double doubleValue;@property (readonly) float floatValue;@property (readonly) int intValue;@property (readonly) NSInteger integerValue;@property (readonly) long long longLongValue;@property (readonly) BOOL boolValue;
写入文件/url
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically
参数path指定文件/url路径,参数useAuxiliaryFile表示是否是原子操作—–原子操作使用辅助文件完成。参数enc指定编码方式,参数error在出错时获取出错信息。
- ios开发之字符串操作(三)
- ios开发之字符串操作(四)
- iOS 之core Data操作(三)
- ios开发之字符串初始化(一)
- 字符串操作(三)
- iOS开发之设计模式(三)
- iOS开发之Masonry(三)
- iOS开发之Pop框架(三)
- IOS开发之HomeKit(三)
- iOS开发Swift篇—(三)字符串和数据类型
- 驱动开发之字符串操作
- NDK开发之字符串操作
- IOS开发之字符串处理
- Php学习之路三(字符串操作)
- ios开发之文件系统操作
- ios开发 之 通讯录操作
- iOS开发之 面向对象的三大特征以及字符串的处理
- IOS开发(三)
- 资源
- 从零开始学centos(一)
- 题目切入方法
- eclipse怎么设置字体大小
- CSS(Cascading Style Sheets)层叠样式表
- ios开发之字符串操作(三)
- 自定义view3
- python2.7(Windows平台)安装PIL
- Qt+opencv+matlab opencv读写高光谱 .mat文件
- 【Java】运算符
- 集合
- Echarts入门
- 浅谈JavaScript中树的先序、中序、后序遍历
- 90-互斥量的共享属性