Ios 如何在Swift中正确使用NSRegular表达式和筛选字符串数组
这是我的问题,我有一个字符串数组,其中包含一组 国家: 让myCountryStart=[“非洲/ABC”、“美国/BBC”、“亚洲/CBC”、“太平洋/CBA”、“欧洲/CBB”、“印度/CAB”] 是否有任何解决方案可以删除以下特定词语 “非洲”、“美洲”、“亚洲”等,。 让输出结果如下所示: 让myCountryEnd=[“ABC”、“BBC”、“CBC”、“CBA”、“CBB”、“CAB”] 这是我现在的代码 我知道这是一个愚蠢的解决方案。因此,我更喜欢使用规则表达式。但是我遇到了一个问题 关于字符串和字符串数组问题 因此,我得到了一个关于我不能在字符串上使用此方法的警告 数组。我该怎么做才能修好它 如有任何建议或帮助,将不胜感激。感谢一位敏捷的新手Ios 如何在Swift中正确使用NSRegular表达式和筛选字符串数组,ios,arrays,swift,regex,string,Ios,Arrays,Swift,Regex,String,这是我的问题,我有一个字符串数组,其中包含一组 国家: 让myCountryStart=[“非洲/ABC”、“美国/BBC”、“亚洲/CBC”、“太平洋/CBA”、“欧洲/CBB”、“印度/CAB”] 是否有任何解决方案可以删除以下特定词语 “非洲”、“美洲”、“亚洲”等,。 让输出结果如下所示: 让myCountryEnd=[“ABC”、“BBC”、“CBC”、“CBA”、“CBB”、“CAB”] 这是我现在的代码 我知道这是一个愚蠢的解决方案。因此,我更喜欢使用规则表达式。但是我遇到了一个问
您可以使用类似于
*/
或^[^/]*/
的正则表达式使用.map
和.replacingOccurrences
:
let myCountryStart = ["Africa/ABC", "America/BBC", "Asia/CBC", "Pacific/CBA", "Europe/CBB", "Indian/CAB"]
let myCountryEnd = myCountryStart.map{ $0.replacingOccurrences(of: ".*/", with: "", options: [.caseInsensitive,.regularExpression]) }
print(myCountryEnd)
// => ["ABC", "BBC", "CBC", "CBA", "CBB", "CAB"]
*/
模式将尽可能多地匹配除换行符以外的任何0个或更多字符,直到最后一个/
^[^/]*/
模式将匹配从字符串开始到第一个/
的任何字符,而不是/
注意:您不需要
.case不区分大小写
选项,我保留它是为了显示如何在选项
参数中组合多个选项。myCountryStart
似乎只有一个元素。这是真的吗?在您的旧代码中,outputStr
是什么?为什么不在新代码中使用它,而不是myCountryStart
?它应该是字符串数组的六个元素。我忘了修改它了。@Sweeper感谢您通知我那个旧代码错误。不过您在编辑时并没有将它更改为6个元素。。。
let target = myCountryStart
let regex = "/"
let RE = try? NSRegularExpression(pattern: "regex", options: .caseInsensitive)
let modified = RE?.stringByReplacingMatches(in: target, options: .reportProgress, range: nil, withTemplate: "") {
return modified
}
let myCountryEnd = modified
let myCountryStart = ["Africa/ABC", "America/BBC", "Asia/CBC", "Pacific/CBA", "Europe/CBB", "Indian/CAB"]
let myCountryEnd = myCountryStart.map{ $0.replacingOccurrences(of: ".*/", with: "", options: [.caseInsensitive,.regularExpression]) }
print(myCountryEnd)
// => ["ABC", "BBC", "CBC", "CBA", "CBB", "CAB"]