replacementOccurrences()中的错误?

时间:2017-12-16 14:23:56

标签: swift

我想知道String函数replacementOccurrences(of:String,with:String)是否有错误:

let s = "Hello     World!"
let cleaned : String = s.replacingOccurrences(of: "  ", with: " ")
print("cleaned = '\(cleaned)'")

我想将多个空格替换为一个

"  " to " "

但字符串保持不变。我已经在obj-c中完成了数百次,所以这是Swift中的一个错误吗?

2 个答案:

答案 0 :(得分:3)

一个错误。您将用一个空格替换每个出现的2个空格。该方法不能递归工作,因此5个空格减少到3个。

您可以使用正则表达式,它用一个空格替换所有出现的一个或多个空格:

let s = "Hello     World!"
let cleaned = s.replacingOccurrences(of: " +", with: " ", options: .regularExpression)
print("cleaned = '\(cleaned)'")

答案 1 :(得分:1)

如Vadian所述,这不是一个错误,这就是你的代码应该如何运作。

这是另一种获得相同结果的方法:

let cleaned = s.components(separatedBy: .whitespaces).filter({ !$0.isEmpty }).joined(separator: " ")

首先用空格分隔字符串,然后使用filter排除所有空格,然后加入用空格分隔它们的字符串。