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



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

textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"r")

使用 replacementlacingOccurrencesString.CompareOptions.regularExpresion 选项。

示例(斯威夫特 3):

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

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

输出:

7Hello, 7play7ground777

我根据罗塞塔密码的想法解决了它

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
    }
}

例:

let str = "Hello, stackoverflow"
let chars: [Character] = ["a", "e", "i"]
let myStrings = ["Hello", ", ", "overflow"]
let newString = str.stringByRemovingAll(chars)
let anotherString = str.stringByRemovingAll(myStrings)

打印时的结果:

新字符串:Hllo, stckovrflow

另一个字符串:stack

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

这样的东西应该适合你

let result1 = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"r") 
let result2 = result1.stringByReplacingOccurrencesOfString(" &nbsp;", withString:" ")
textView.text = result2
extension String {
    var html2AttributedString:NSAttributedString {
        return NSAttributedString(data: dataUsingEncoding(NSUTF8StringEncoding)!, options:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding], documentAttributes: nil, error: nil)!
    }
}
let myHtmlCode = "<style type="text/css">#red{color:#F00}#green{color:#0F0}#blue{color: #00F}</style><span id="red" >Red</span> <span id="green" >Green</span><span id="blue">Blue</span>"
myHtmlCode.html2AttributedString

最新更新