下面是我用來用回車替換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