我想知道如何删除前缀列表中包含的任何前缀(例如:[“the”,“a”,“an”]来自给定字符串(例如:“一个大红色星球” - > “大红色星球”)。
我尝试过这个想法,但我不知道它是正确的还是最有效的。
extension String {
func removing(prefixes: [String]) -> String {
var resultString = self
prefixes.map {
if resultString.hasPrefix($0) {
resultString = resultString.dropFirst($0.count).description
}
}
return resultString
}
}
想法来自这个答案:How to create a dictionary by first letter of title but ignore articles like "the" or "a/an" etc
答案 0 :(得分:3)
这是使用正则表达式的替代方法
好处:
正则表达式模式为^(prefix1|prefix2|prefix3)\\s?
。它匹配字符串的开头(^
),后跟一个(引用的)前缀(or
表达式与|
运算符),后跟可选的空白字符({{1} })。
\\s?
答案 1 :(得分:0)
将比较目标更改为大写或小写以进行比较。
我不知道这是否是你想要的答案,但我希望它有所帮助。
prefixes.map {
if resultString.hasPrefix($0.uppercased()) || resultString.hasPrefix($0.lowercased()) {
resultString = resultString.dropFirst($0.count).description
}
}
完整资源
extension String {
func removingPrefixes(_ prefixes: [String]) -> String {
var resultString = self
prefixes.map {
if resultString.hasPrefix($0.uppercased()) || resultString.hasPrefix($0.lowercased()) {
resultString = resultString.dropFirst($0.count).description
print("\(resultString)")
}
}
return resultString
}
}
/** print("A big red the planet".removingPrefixes(["the", "a", "an"]))
* result -> "big red the planet" */