21

我试图弄清楚如何在字符串中获取子字符串的范围。范围是指子字符串的开始位置和结束位置。因此,如果我有以下字符串示例:

NSString *testString=@"hello everyone how are you doing today?Thank you!";

如果我正在寻找的子字符串(在这个例子中)是“你好吗”,那么开始范围应该是 15,结束范围应该是 31。

  (15, 31)

谁能告诉我如何以编程方式做到这一点?谢谢!

4

3 回答 3

53

您可以使用该方法-rangeOfString来查找字符串中子字符串的位置。然后,您可以将该范围的位置与 NSNotFound 进行比较,以查看字符串是否确实包含子字符串。

NSRange range = [testString rangeOfString:@"how are you doing"];

if (range.location == NSNotFound) {
    NSLog(@"The string (testString) does not contain 'how are you doing' as a substring");
}
else {
    NSLog(@"Found the range of the substring at (%d, %d)", range.location, range.location + range.length);        
}
于 2013-06-08T10:22:33.723 回答
12

这很简单。你说你想搜索字符串“大家好,你今天过得怎么样?谢谢!” 对于“你好吗”。

你说你需要第一个字符和最后一个字符的位置。

NSString *testString=@"hello everyone how are you doing today?Thank you!";

NSRange range = [testString rangeOfString:@"how are you doing"];

NSUInteger firstCharacterPosition = range.location;
NSUInteger lastCharacterPosition = range.location + range.length;

所以现在你有了最后两个变量。

于 2013-06-08T10:55:32.190 回答
2

使用以下的内置方法部分NSString

[testString rangeOfString:@"hello how are you doing"]

文档: https ://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/uid/20000154-rangeOfString_

于 2013-06-08T10:22:25.637 回答