我想知道如何从给定的字符串中删除包含在前缀列表中的任何前缀(例如:[“the”、“a”、“an”](例如:“A big red Planet”->“big red Planet”) ”)。
我已经尝试过这个想法,但我不知道它是正确的还是最有效的。
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 但忽略像“the”或“a/an”等文章
这是使用正则表达式的替代方法
好处:
正则表达式模式是^(prefix1|prefix2|prefix3)\\s?
. 它匹配字符串 ( ^
) 的开头,后跟(带引号的)前缀之一(作为or
带有|
运算符的表达式),后跟可选的空白字符 ( \\s?
)。
extension String {
func removingPrefixes(_ prefixes: [String]) -> String {
let pattern = "^(\(prefixes.map{"\\Q"+$0+"\\E"}.joined(separator: "|")))\\s?"
guard let range = self.range(of: pattern, options: [.regularExpression, .caseInsensitive]) else { return self }
return String(self[range.upperBound...])
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句