检测NSStrings中的整个单词 [英] Detect whole word in NSStrings

查看:76
本文介绍了检测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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆