检测NSStrings中的整个单词 [英] Detect whole word in NSStrings
问题描述
如何检测NSString是否包含特定单词,例如is
.
How do I detect if an NSString contains a specific word, e.g. is
.
如果NSString是Here is my string. His isn't a mississippi isthmus. It is...
?该方法应检测到单词is
并返回YES
.
If the NSString is Here is my string. His isn't a mississippi isthmus. It is...
? The method should detect the word is
and return YES
.
但是,如果NSString是His isn't a mississipi isthmus
,它应该返回NO
.
However, if the NSString is His isn't a mississipi isthmus
, it should return NO
.
我尝试使用if ([text rangeOfString:@"is" options:NSCaseInsensitiveSearch].location != NSNotFound) { ... }
,但是它检测到字符而不是单词.
I tried using if ([text rangeOfString:@"is" options:NSCaseInsensitiveSearch].location != NSNotFound) { ... }
but it detects characters not words.
推荐答案
对单词边界模式" \b
使用正则表达式"搜索:
Use "regular expression" search with the "word boundary pattern" \b
:
NSString *text = @"Here is my string. His isn't a mississippi isthmus. It is...";
NSString *pattern = @"\\bis\\b";
NSRange range = [text rangeOfString:pattern options:NSRegularExpressionSearch|NSCaseInsensitiveSearch];
if (range.location != NSNotFound) { ... }
这对于"Is it?"
或"It is!"
这样的单词也不会被空格包围的情况也适用.
This works also for cases like "Is it?"
or "It is!"
, where the word is not surrounded by spaces.
在 Swift 2 中,这应该是
let text = "Here is my string. His isn't a mississippi isthmus. It is..."
let pattern = "\\bis\\b"
if let range = text.rangeOfString(pattern, options: [.RegularExpressionSearch, .CaseInsensitiveSearch]) {
print ("found:", text.substringWithRange(range))
}
快捷键3:
let text = "Here is my string. His isn't a mississippi isthmus. It is..."
let pattern = "\\bis\\b"
if let range = text.range(of: pattern, options: [.regularExpression, .caseInsensitive]) {
print ("found:", text.substring(with: range))
}
快捷键4:
let text = "Here is my string. His isn't a mississippi isthmus. It is..."
let pattern = "\\bis\\b"
if let range = text.range(of: pattern, options: [.regularExpression, .caseInsensitive]) {
print ("found:", text[range])
}
Swift 5 (使用新的原始字符串文字):
Swift 5 (using the new raw string literals):
let text = "Here is my string. His isn't a mississippi isthmus. It is..."
let pattern = #"\bis\b"#
if let range = text.range(of: pattern, options: [.regularExpression, .caseInsensitive]) {
print ("found:", text[range])
}
这篇关于检测NSStrings中的整个单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!