components由Swift中的多个分隔符分隔

He *_*何一非 3 split string-split ios swift

所以这是字符串s:

"Hi! How are you? I'm fine. It is 6 p.m. Thank you! That's it."
Run Code Online (Sandbox Code Playgroud)

我希望它们被分隔为一个数组:

["Hi", "How are you", "I'm fine", "It is 6 p.m", "Thank you", "That's it"]
Run Code Online (Sandbox Code Playgroud)

这意味着分隔符应为". "+ "? "+"! "

我试过了:

let charSet = NSCharacterSet(charactersInString: ".?!")
let array = s.componentsSeparatedByCharactersInSet(charSet)
Run Code Online (Sandbox Code Playgroud)

但它也将分为p.m.两个元素.结果:

["Hi", " How are you", " I'm fine", " It is 6 p", "m", " Thank you", " That's it"]
Run Code Online (Sandbox Code Playgroud)

我也试过了

let array = s.componentsSeparatedByString(". ")
Run Code Online (Sandbox Code Playgroud)

它可以很好地用于分离". ",但如果我也想分开"? ","! ",它变得杂乱.

所以我能做到这一点吗?谢谢!

rma*_*ddy 5

提供了一种允许枚举字符串的方法.您可以通过单词或句子或其他选项来完成此操作.不需要正则表达式.

let s = "Hi! How are you? I'm fine. It is 6 p.m. Thank you! That's it."
var sentences = [String]()
s.enumerateSubstringsInRange(s.startIndex..<s.endIndex, options: .BySentences) { 
    substring, substringRange, enclosingRange, stop in
    sentences.append(substring!)
}
print(sentences)
Run Code Online (Sandbox Code Playgroud)

结果是:

["嗨!","你好吗?","我没事.","现在是下午6点","谢谢!","就是这样."]