我现在有一个很长的文本,里面有数字,单词,符号(如",?,我现在有一个非常长的文本与数字,词,符号(即“,?,;,',‘,-,+等)。我试图从文本中剥离所有的数字和符号,所以我纯粹有一个文本,只有单词。
我的期望是(在下面的示例中忽略语义):
(BEFORE Sanitization) John's pet (Parson) is sleeping in a car: a BMW.
(AFTER Sanitization) John s pet Parson is sleeping in a car a BMW 下面是我尝试的代码:
static func splitText(text: String) -> [String] {
let lowerCasedString = text.lowercased()
let sanitizedString = lowerCasedString.replacingOccurrences(of: "\\d+|:", with: " ", options: .regularExpression)
let splittedStringArray = sanitizedString.split { [",", "[", "]", " ", " - ", "(", ")", ".", "/"].contains( String($0)) }.map(String.init)
print(splittedStringArray)
return splittedStringArray
}当我运行这个函数时,我仍然看到许多符号和单词,比如John's。如何改进此功能以删除所有可能的符号?
我只想让字母留在我的文字里。
另外,Swift中是否有用于此目的的消毒框架?
发布于 2017-10-29 03:59:59
这个答案利用了NSString。
import Foundation
public extension String {
var sanitized: String {
return self
.replacingOccurrences(of: "[^a-zA-Z0-9]", with: " ", options: .regularExpression)
.replacingOccurrences(of: "\\s+", with: " ", options: .regularExpression)
}
}
print("John's pet (Parson) is sleeping in a car: a BMW.".sanitized) // John s pet Parson is sleeping in a car a BMW它通过两次通过String来工作:第一,替换非字母数字字符的出现;第二,用单个空格替换多个空格。
https://stackoverflow.com/questions/46996541
复制相似问题