比较字符串
如果想要比较两个字符串,那么请向第一个字符串发送isEqualToString:消息并将第二个字符串作为参数。可以通过消息返回的布尔值来对字符串进行比较
NSString *myString1 = [NSString stringWithFormat:@"xrd"];
NSString *myString2 = [NSString stringWithFormat:@"xrd"];
BOOL isEqual = [myString2 isEqualToString:myString1];
可以查看某两个字符串是否具有匹配的后缀或前缀。比如字符串“Mr. John Smith, MD”,可以通过向该字符串发送hasPrefix:消息来查看字符串是否具有前缀”Mr”:
NSString *name = @"Mr. John Smith, MD";
BOOL hasMrPrefix = [name hasPrefix:@"Mr"];
类似地,可以发送hasSuffix:消息来查看该字符串是否具有后缀”MD”:
BOOL hasMDSuffix = [name hasSuffix:@"MD"];
可以通过NSRange复合类型定义起始点与子串的长度,进而比较子串。首先通过NSRange信息返回子串,接下来使用子串测试两个字符串是否一样:
NSString *alphabet = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSRange range = NSMakeRange(2,3);
BOOL lettersInrange = [[alphabet substringWithRange:range] isEqualToString:@"CDE"];
操纵字符串
NSMutableString *myMutableString = [[NSMutableString alloc] initWithCapacity:26];
设置字符串的内容
[myMutableString setString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
要想向可变字符串追加字符串 可以发送appendString
[myMutableString appendString:@", 0123456789"];
向可变字符串的其他位置插入字符,需要指定字符串的插入位置并使用insertString
[myMutableString insertString:@"abcdefg" atIndex:0];
可以通过deleteCharactersInRange:消息并将希望删除的范围作为参数 从可变字符串中删除字符 使用NSMakeRange函数以及想要删除字符的起始位置与长度来定义删除范围
NSRange range = NSMakeRange(9, 3);
[myMutableString deleteCharactersInRange:range];
NsMutableString还提供了内置方法 用于将某个范围的所有字符替换为不同的字符。因此,如果想将字符串中的”,”替换为”|”,那么可以通过replaceOccurrencesOfString:withString:options:range:方法来实现
注意:这里的rangeOfString指定了整个字符串 也可以自己定义范围
NSRange rangeOfString = [myMutableString rangeOfString:myMutableString];
[myMutableString replaceOccurrencesOfString:@","
withString:@"|"
options:NSCaseInsensitiveSearch
range:rangeOfString];
使用其他字符串替换掉整个范围内的字符 可以通过
NSRange rangeToReplace = NSMakeRange(0, 4);
[myMutableString replaceCharactersInRange:rangeToReplace withString:@"More"];
搜索字符串
要想在字符串中搜索另一个字符串,可以向待搜索的字符串发送消息。需要指定待搜索的范围和搜索选项。如果找不到,那么返回NSNotFound或长度为0;如果找到,那么会返回某个范围,其中包含了字符串的定位信息。
NSString *stringToSearch = @"This string is something that you can search.";
NSRange rangeToSearch = [stringToSearch rangeOfString:stringToSearch];
NSRange resultsRange = [stringToSearch rangeOfString:@"something"
options:NSCaseInsensitiveSearch
range:rangeToSearch];
当搜索完成时,返回的NSRange对象包含了你所需要的信息,如果NSRange的location属性为NSNotFound,那就表示没有搜索到任何结果。否则,NSRange 对象会抱憾搜索字串的位置和长度
if (resultsRange.location != NSNotFound) {
NSLog(@"String found starting at location %lu with a length of %lu",resultsRange.location,resultsRange.length);
NSLog(@"%@",[stringToSearch substringWithRange:resultsRange]);
} else NSLog(@"The search didn't turn up any results");
将数字转换为字符串
将数字(原生类型或是NSNumber 对象)当作字符串来使用
假设拥有诸如浮点数这样的原生类型
float fNumber = 12;
NSString *floatToString = [NSString stringWithFormat:@"%f",fNumber];
如果想要转换的是NSNumber对象
NSNumber *number = [NSNumber numberWithFloat:30];
NSString *numberToString = [number stringValue];
将字符串转换为数字
假设拥有以字符串形式存储的数字,你想要将它们用做浮点原生类型,请使用NSString类的floatValue函数获取数字的值
NSString *aFloatValue = @"12.50";
float f = [aFloatValue floatValue];
如果想要在字符串转换为NSNumber对象,那么需要在NSNumber构造函数中使用floatValue函数
NSNumber *aFloatNumber = [NSNumber numberWithFloat:[aFloatValue floatValue]];
格式化数字
使用NSNumberFormatter类格式化数字,你需要实例化NSNumberFormatter类并设置一些属性,从而按照期望的方式显示数字
/*
没有格式的数字(NSNumberFormatterNoStyle)
以十进制形势展现数字
以货币形式展现数字
以百分比形式展现数字
以科学技术法形式展现数字
以自然语言形式展现数字
*/