Swift替换字符串中的多个字符

Jef*_*ard 10 string replace ios swift

下面是我用来替换带有回车符的HTML break标记的以下代码行.但是,我还需要替换其他HTML符号,当我再次调用这行代码时,使用不同的参数,就像第一个被覆盖一样.有没有办法可以包含多个参数?在Swift中有更有效的方法吗?例如:将br>替换为"",将nbsp替换为"".

textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
Run Code Online (Sandbox Code Playgroud)

Mic*_*son 19

使用replacingOccurrences用了一起String.CompareOptions.regularExpresion选项.

示例(Swift 3):

var x = "<Hello, [play^ground+]>"
let y = x.replacingOccurrences(of: "[\\[\\]^+<>]", with: "7", options: .regularExpression, range: nil)
print(y)
Run Code Online (Sandbox Code Playgroud)

在方括号内输入要输入的字符,如[\\字符]

输出:

7Hello, 7play7ground777
Run Code Online (Sandbox Code Playgroud)


sko*_*gar 9

我根据Rosetta Code的想法解决了这个问题

extension String {
    func stringByRemovingAll(characters: [Character]) -> String {
        return String(self.characters.filter({ !characters.contains($0) }))
    }

    func stringByRemovingAll(subStrings: [String]) -> String {
        var resultString = self
        subStrings.map { resultString = resultString.stringByReplacingOccurrencesOfString($0, withString: "") }
        return resultString
    }
}
Run Code Online (Sandbox Code Playgroud)

例:

let str = "Hello, stackoverflow"
let chars: [Character] = ["a", "e", "i"]
let myStrings = ["Hello", ", ", "overflow"]

let newString = str.stringByRemovingAll(chars)
let anotherString = str.stringByRemovingAll(myStrings)
Run Code Online (Sandbox Code Playgroud)

结果,打印时:

newString: Hllo, stckovrflow

anotherString: stack

  • 这不是一个有效的解决方案,请使用CompareOptions.CompareOptions.regularExpression查看我的答案 (2认同)

Jaw*_*wad 7

正如@matt所提到的,你将重新开始使用相同的content字符串.stringByReplacingOccurrencesOfString方法实际上不会更改原始content字符串中的任何内容.它会返回一个包含替换更改的新字符串,同时content保持不变.

这样的事情对你有用

let result1 = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r") 
let result2 = result1.stringByReplacingOccurrencesOfString(" &nbsp;", withString:" ")
textView.text = result2
Run Code Online (Sandbox Code Playgroud)