下面是我用来用回车替换HTML分隔标记的以下代码行。但是,我有其他需要替换的HTML符号,并且当我使用不同的参数再次调用这行代码时,就好像第一个代码被覆盖。有没有一种方法可以包含多个参数?在Swift中有更有效的方法吗?例如:用“”替换“”,用“”替换。Swift替换字符串中的多个字符
textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
下面是我用来用回车替换HTML分隔标记的以下代码行。但是,我有其他需要替换的HTML符号,并且当我使用不同的参数再次调用这行代码时,就好像第一个代码被覆盖。有没有一种方法可以包含多个参数?在Swift中有更有效的方法吗?例如:用“”替换“”,用“”替换。Swift替换字符串中的多个字符
textView.text = content.stringByReplacingOccurrencesOfString("<br /><br />", withString:"\r")
由于@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
我解决了它的基础上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
这不是一个有效的解决方案,请使用CompareOptions.CompareOptions不规则表达式 – 2016-11-10 15:31:42
@Michael但我想这在更通用的情况下工作。如果我的字符串不是正则表达式呢?你的答案如何改变? – 2017-08-31 11:47:56
@KarthikKannan你是指下面的答案吗?你有没有评论错误的答案?如果是这样,请在我的回答中重复这个问题,以避免混淆别人。 – 2017-08-31 16:08:11
使用replacingOccurrences用的String.CompareOptions.regularExpresion选项一起。
实施例(SWIFT 3):
var x = "<Hello, [play^ground+]>"
let y = x.replacingOccurrences(of: "[\\[\\]^+<>]", with: "7", options: .regularExpression, range: nil)
print(y)
输入字符,而它们在方括号中被替换像这样[\\性状]
输出:
7Hello, 7play7ground777
这真是太棒了,正是我在找的!正确使用RegEx,这在Swift中并没有太多用处。感谢迈克尔的真棒回答。 – Trev14 2017-05-04 22:55:03
你能解释一下 - 我应该总是使用'.regularExpression'吗?如果我只需要指定一个需要替换/删除的具体符号列表,该怎么办? – 2017-10-17 09:31:36
可能有其他方法,但是正则表达式是表示一组具体字符的好方法。例如,如果我想替换“A”,“B”和“Z”,代码将如下所示:x.replacingOccurrences(of:“[ABZ]”,其中:“7”,options:.regularExpression,range :无) – 2017-10-17 13:46:48
显示如何“再次调用这行代码”。毕竟,这就是你出错的地方。 – matt 2015-01-21 04:23:29
textView.text = content.stringByReplacingOccurrencesOfString( “
”,withString: “\ r”) textView.text = content.stringByReplacingOccurrencesOfString( “ ”,withString:”“) – 2015-01-21 04:27:06
但是有问题。您正在从原始的“内容”开始。文本视图的文本被覆盖,因为_you_覆盖它! – matt 2015-01-21 04:45:36