在Swift中从单词中隔离标点符号



我正在尝试隔离而不是从数组中的单词中删除标点符号。

例如,下面的数组包含有标点符号的单词:

let words = ["hello", "world!!"]

下面的代码执行分隔一个标点符号。

for i in 0..<words.count {          
    if let range = words[i].rangeOfCharacter(from: .punctuationCharacters) {
        words.insert(words[i].substring(with: range), at: i+1)
        words[i].replaceSubrange(range, with: "")
    }
}

因此words数组变成:

["hello", "world!", "!"]

但是,我希望函数单独隔离每个标点符号,而不是像现在这样一次一个:

["hello", "world", "!", "!"]

到目前为止,我已经尝试遍历字符串的字符并针对CharacterSet.punctuationCharacters测试它们,但感觉效率低下且笨拙

我如何以快速的方式实现这一点?

我不认为有一种快速时尚的方式来做到这一点,但如果你的单词数组是一致的,你可以这样做:

let words = ["hello", "world!!"]
var res: [String] = []
for word in words {
    res += word.components(separatedBy: .punctuationCharacters).filter{!$0.isEmpty}
    res += word.components(separatedBy: CharacterSet.punctuationCharacters.inverted).filter{!$0.isEmpty}.joined().characters.map{String($0)}
}
print(res)   // ["hello", "world", "!", "!"]

相关内容

  • 没有找到相关文章

最新更新