首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中处理长文本时要面对多个边缘情况

在Swift中处理长文本时要面对多个边缘情况
EN

Stack Overflow用户
提问于 2017-10-29 03:19:18
回答 1查看 154关注 0票数 0

我现在有一个很长的文本,里面有数字,单词,符号(如",?,我现在有一个非常长的文本与数字,词,符号(即“,?,;,',‘,-,+等)。我试图从文本中剥离所有的数字和符号,所以我纯粹有一个文本,只有单词。

我的期望是(在下面的示例中忽略语义):

代码语言:javascript
复制
(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 

下面是我尝试的代码:

代码语言:javascript
复制
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中是否有用于此目的的消毒框架?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-29 03:59:59

这个答案利用了NSString

代码语言:javascript
复制
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来工作:第一,替换非字母数字字符的出现;第二,用单个空格替换多个空格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46996541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档