我的replacementOccurrences函数遇到了问题。我有一个像这样的字符串:
let x = "&john &johnny &johnney"
我需要做的只是删除“& john”
所以我有这段代码:
y = "&john"
x = x.replacingOccurrences(of: y, with: " ", options: NSString.CompareOptions.regularExpression, range: nil)
我得到的问题是,这将删除所有john的实例......而且我留下了:
"ny ney"
此外,我考虑设置范围,然而,这不会真正解决我的问题,因为名称可能是不同的顺序。
答案 0 :(得分:6)
首先,您的代码无法编译,因为x
必须是var
。
要仅使用正则表达式删除&John
,您需要检查查询的结尾是否为单词边界:
var x = "&john &johnny &johnney"
let pattern = "&john\\b"
x = x.replacingOccurrences(of: pattern, with: " ", options: .regularExpression)
答案 1 :(得分:1)
为字符串添加空格,使其变为" &john "
。现在它不会删除不必要的字符。
但是,如果&john
是名称列表中的第一个或最后一个,则无效。要解决此问题,您只需通过调用&john
和hasSuffix
来检查字符串是否具有hasPrefix
的后缀或前缀。
实际上,我只想到了一个更好的解决方案:
x = x.components(separatedBy: " ").
filter { $0 != "&john" }.joined(separator: " ")
答案 2 :(得分:-2)
您可能希望在要删除的字符串末尾包含空格:
y = "&john "