首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >组件在Swift中由多个分隔符以字符串分隔

组件在Swift中由多个分隔符以字符串分隔
EN

Stack Overflow用户
提问于 2015-12-13 10:17:37
回答 2查看 2.6K关注 0票数 4

下面是字符串s

代码语言:javascript
复制
"Hi! How are you? I'm fine. It is 6 p.m. Thank you! That's it."

我希望将它们分隔到一个数组中,如下所示:

代码语言:javascript
复制
["Hi", "How are you", "I'm fine", "It is 6 p.m", "Thank you", "That's it"]

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

我试过了:

代码语言:javascript
复制
let charSet = NSCharacterSet(charactersInString: ".?!")
let array = s.componentsSeparatedByCharactersInSet(charSet)

但它也会将p.m.分成两个元素。结果:

代码语言:javascript
复制
["Hi", " How are you", " I'm fine", " It is 6 p", "m", " Thank you", " That's it"]

我也试过

代码语言:javascript
复制
let array = s.componentsSeparatedByString(". ")

它可以很好地分离". ",但是如果我还想分离"? ""! ",它就会变得混乱。

所以我有办法做到吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-04-01 06:46:36

如果拆分基础是比句子更深奥的东西,这个扩展可能会起作用。

代码语言:javascript
复制
extension String {
    public func components(separatedBy separators: [String]) -> [String] {
        var output: [String] = [self]
        for separator in separators {
            output = output.flatMap { $0.components(separatedBy: separator) }
        }
        return output.map { $0.trimmingCharacters(in: .whitespaces)}
    }
}

let artists = "Rihanna, featuring Calvin Harris".components(separated by: [", with", ", featuring"])
票数 2
EN

Stack Overflow用户

发布于 2015-12-13 11:36:25

我也试图找到一个正则表达式来解决这个问题:(([^.!?]+\s)*\S+(\.|!|\?))这里是来自regexper的解释,还有一个example

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

https://stackoverflow.com/questions/34247316

复制
相关文章

相似问题

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