以下是我用来将HTML换行符替换为回车的代码。然而,我还有其他需要替换的HTML符号,当我再次调用这行代码时,使用不同的参数,好像第一个被覆盖了一样。有没有办法可以包含多个参数?在Swift中有没有更有效的方法?例如:同时替换br>和nbsp为""。
textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
以下是我用来将HTML换行符替换为回车的代码。然而,我还有其他需要替换的HTML符号,当我再次调用这行代码时,使用不同的参数,好像第一个被覆盖了一样。有没有办法可以包含多个参数?在Swift中有没有更有效的方法?例如:同时替换br>和nbsp为""。
textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
使用 replacingOccurrences 方法,并且传入参数 String.CompareOptions.regularExpresion。
示例(Swift 3):
var x = "<Hello, [play^ground+]>"
let y = x.replacingOccurrences(of: "[\\[\\]^+<>]", with: "7", options: .regularExpression, range: nil)
print(y)
在方括号内输入要替换的字符,例如 [\\ Characters]
输出:
7Hello, 7play7ground777
.regularExpression
?如果我只需要指定一个需要替换/删除的具体符号列表呢? - Vyachaslav Gerchicov我根据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
}
}
例子:
let str = "Hello, stackoverflow"
let chars: [Character] = ["a", "e", "i"]
let myStrings = ["Hello", ", ", "overflow"]
let newString = str.stringByRemovingAll(chars)
let anotherString = str.stringByRemovingAll(myStrings)
打印结果:
newString: Hllo, stckovrflow
anotherString: stack
正如@matt所提到的,您正在使用相同的content
字符串重新开始。stringByReplacingOccurrencesOfString方法实际上并不会更改原始的content
字符串。它会返回一个新的字符串,其中包含替换更改,而content
保持不变。
像这样的一些内容应该适合您:
let result1 = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
let result2 = result1.stringByReplacingOccurrencesOfString(" ", 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