1.4.1 字符串
可能最常使用的类就是NSString。NSString是不可变的,这意味着一旦创建了它,就不能修改它。如果需要修改一个NSString的内容,应该使用NSMutableString类。然而,直接用新的内容创建一个新的NSString,这种做法更为常见。
有很多种方法可以创建一个NSString,其中最简单的可能就是下面这种:
- NSString * myString =@"some string";
要创建一个格式化的字符串,应该使用如下的代码:
- NSString * myString = [NSString
- -tringWithFormat:@" object =
- @",someObject];
一些最常用的格式指定符:%d用来表示整数,%f表示双精度浮点数,而%@表示对象(要获取格式指定符的完整列表,请参考开发者文档中《String Programming Guide》的"String Format Specifiers"部分)。
如果你拥有的字符串只包含数字,可以使用下面的代码来返回数字值:
- NSString * myString = @"12345";
- double doubleString = [myString
- -loatValue];
- int intString =[myString intValue];
这两种方法都试图创建数字值直到遇到字符串中的第一个非数字的字符,例如,对于一个字符串"123abc",intValue方法将返回123。
可以获取一个字符串的长度:
- int stringLength = [myString
- -ength];
要比较两个字符串,可以使用如下代码:
- BOOL areEqual = [string1
- -sEqualToString:string2]
如果两个字符串中的所有字符都完全相同,这将返回TRUE。
要执行一次区分大小写的比较,可以使用如下代码:
- BOOL areEqual = ([string1
- -aseInsensitiveCompare:string2] ==
- -SOrderedSame);
也可以像下面这样转换一个字符串的大小写:
- NSString * myString = "abcdef" ;
- NSString * upper = [myString
- -ppercaseString];
- NSString * lower = [myString
- -owercaseString];
可以很容易地截去一个字符串中不需要的字符。例如,要从一个字符串中删除所有的空白,可以使用下面的代码:
- NSString * myString = @"one two
- -hree";
- NSString * trimmed =[myString string
- -yTrimmingCharactersInSet:
- -NSCharacterSet whitespace
- -haracterSet]];
这段代码将会输出字符串"one two three"。
通过一个已有的字符串创建子字符串,有如下几种方法:
例如,通过如下的字符串创建一个内容为"one"的新字符串:
- NSString * numberString = @"one two
- -hree";
可以使用如下代码:
- NSString * aString = [numberString
- -ubstringToIndex:3];
可以使用如下代码:
- NSRange range = NSMakeRange (4,3);
- NSString * aString = [numberString
- -ubstringWithRange:range];
创建内容为"two"的一个新字符串。
最后,可以使用如下代码:
- NSString * aString = [numberString
- -ubstringFromIndex:8];
创建内容为"three"的一个新字符串。
我们也可以创建一个数组,它包含这3个字符串作为其元素(使用空格字符作为分隔符),使用如下代码即可:
- NSArray * arr = [numberString
- -omponentsSeparatedByString:@""];
这将会得到数组:
- {"one","two","three"}.
要替换字符串中的子字符串,使用如下代码:
- NSString * aString = [numberString
- -tringByReplacingOccurrencesOf
- -tring:@"three" withString:
- -"four"];
将会得到字符串:"one two four"。
可以在一个字符串中查找一个子字符串:
- NSRange foundRange = [numberString
- -angeOfString:@"two"];
这段代码将返回范围{4,3}(表示在位置4找到了一个长度为3的匹配)。
可以判断一个字符串是否包含一个子字符串:
- BOOL found = ([numberString
- -angeOfString:@"two"].location !=
- -SNotFound);
可以组合字符串:
- NSString * string1 = @"one";
- NSString * string2 = [string1
- -tringByAppendingString:@" two"];
这将会得到字符串"one two"。
NSString也包含众多的用来处理文件的函数。我们可以从文件读取内容,或者向文件中写入内容,以及获取文件
路径和扩展名这样的信息。
例如,要把一个文件的内容读入到一个字符串中,使用如下代码:
- NSString * fileContents = [NSString
- -tringWithContentsOfFile:
- -"myfile.txt"];
我们可以获取一个文件的文件扩展名:
- NSString * fileName = @"myfile.txt";
- NSString * fileExtension =
- -fileName pathExtension];
也可以使用NSString从一个URL读取内容或者向其写入内容。
例如,把一个URL的内容读入到字符串中,可以使用如下代码:
- NSURL * url = [NSURL URLWithString:
- -"http://google.com"];
- NSString pageContents = [NSString
- -tringWithContentsOfURL:url];