簡體   English   中英

Swift替換字符串中的多個字符

[英]Swift Replace Multiple Characters in String

下面是我用來替換帶有回車符的HTML break標記的以下代碼行。 但是,我還需要替換其他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)

在方括號內輸入要輸入的字符,如[\\\\字符]

輸出:

7Hello, 7play7ground777

我根據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)

結果,打印時:

Hllo, stckovrflowHllo, stckovrflow

anotherString: stack

正如@matt所提到的,你將重新開始使用相同的content字符串。 stringByReplacingOccurrencesOfString方法實際上不會更改原始content字符串中的任何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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM