我需要找一个字或几个字。然而,通过这种方法,我发现了一些词。
NSString *searchString = [NSString stringWithFormat:@"%@",searchField.text];
NSRange range = [textString rangeOfString : searchString];
if (range.location != NSNotFound) {
NSLog(@"textString = %@", textString);
}
我需要单词/ words exact
我该怎么办?
谢谢!
答案 0 :(得分:3)
在NSString中有各种解析/查找子字符串的方法:
cat
时,catapult
不会返回cat
。......他们当然都有自己的PRO和CON。
NSString有9个方法分组在“查找字符和子字符串”下。方法如:
<强> -rangeOfString:强>
查找并返回接收器中给定字符串第一次出现的范围。
NSRegularExpression有5个方法分组在“使用正则表达式搜索字符串”下。方法如:
-numberOfMatchesInString:options:range:
返回字符串指定范围内正则表达式的匹配数。
了解NSScanner可能也很有用,但是如果你解析字符串而不是简单地查找子部分,这个类会更有用。
答案 1 :(得分:2)
如果在搜索字符串的末尾添加空格会发生什么情况,如下所示:
NSString *searchString = [NSString stringWithFormat:@"%@ ",searchField.text];
如果来自searchField.text
的字符串已经以空格结尾,则必须将其删除。
这还不是一个完美的解决方案,例如,如果搜索字符串位于句子末尾,则无法找到它。相反,你可以做的不是添加空格字符,而是在点击后查看字符并确保它不是字母。为此,请查看课程NSCharacterSet
:
NSCharacterSet * letters = [NSCharacterSet letterCharacterSet];
if (![letters characterIsMember:[textString characterAtIndex:(range.location+searchString.length)]]) {
...
}