Swift 3删除所有不在引号“”内的空格?

时间:2017-03-09 11:56:09

标签: regex swift string swift3

Swift提供哪些工具来仅删除不在双引号内的空格? [“Alexa”,“Siri”,“Thomas Marcel”]应该转变为[“Alexa”,“Siri”,“Thomas Marcel”]。我知道您可以使用“replacementOccurrences”,但这会删除引号内的空格。

感谢您的帮助!

编辑:感谢我发现的评论,我只需要json序列化!

WHERE (name1 || ' ' || name2) ~ 'Emily|Jack|James|Chloe'

2 个答案:

答案 0 :(得分:1)

首先,这不是一个正则表达式问题,根据评论应该有一个更好的解决方案使用json序列化。尽管如此,正如正则表达式被标记,因此以下解决方案是检查问题是否可以用正则表达式方式解决...

你可以试试这个:

\s(?=(([^\"]*\"[^\"]*){2})*$)

并替换为""

Demo

请记住,如果你的每个字符串都太大,可能会导致灾难性的回溯或超时......所以,如果你必须只通过regex replace这样做,那么我认为你可以遵循这种方法......这样做时,每个行都单独应用正则表达式,而不是一次提供完整的一行。

答案 1 :(得分:1)

让JSON为你完成工作可能是一个更好的计划,但是,为了好玩,你可以做这样的事情:

 var line = "[\"Alexa\",         \"Siri\", \"Thomas Marcel\"]"

 line = line.components(separatedBy:"\"")
            .enumerated()
            .map{ ($0 % 2 == 1) ? $1 : $1.replacingOccurrences(of: " ", with: "") }
            .joined(separator: "\"")

 // line will contain: ["Alexa","Siri","Thomas Marcel"]