Swift 3替换发生的确切

时间:2017-04-21 23:25:53

标签: swift

我的replacementOccurrences函数出现问题。我有一个像这样的字符串:

let x = "john, johnny, johnney"

我需要做的只是删除" john"

所以我有这段代码:

y = "john"
x = x.replacingOccurrences(of: y, with: " ", options: NSString.CompareOptions.literal, range: nil)

我得到的问题是这删除了所有john的实例...而且我考虑设置范围,但是,它不会真正解决我的问题,因为名称可能是不同的顺序。

是否有一个CompareOptions功能,我忽略了"确切"或者我是否需要创建正则表达式?

此致

Denis Angell

2 个答案:

答案 0 :(得分:1)

您应该使用正则表达式来匹配确切的单词,您只需要在\b之间放置所需的单词。试试这样:

let x = "johnny, john, johnney"
let y = "john"
let z = x.replacingOccurrences(of: "\\b\(y)\\b", with: " ", options: .regularExpression)  // "johnny,  , johnney"
let x =  "johnny &john johnney"
let y = "&john"
let z = x.replacingOccurrences(of: y + "\\b", with: " ", options: .regularExpression)

答案 1 :(得分:0)

正则表达式可能是您的最佳选择,因为没有适用于所有语言的“完全”的一般规则。在英语和大多数浪漫语言中,您将“精确”定义为在要替换的单词之前或之后没有字母字符。

正则表达式可以相对简单地表达英语,因为没有复杂的字母组合,而a-z几乎全部都是。在其他语言中,您将不得不担心变音符号(法语,其他拉丁语言),在阿拉伯语中您需要考虑一些单词开头的组合字母A(Aleph),依此类推。