簡體   English   中英

如何從字符串 Swift 中刪除 '\u{ef}' 字符

[英]How to remove '\u{ef}' character from String Swift

假設我有一個字符串

var a = "#bb #cccc #ddddd\u{ef}" 

我像這樣將它設置為 textview

let text = a.trimmingCharacters(in: .whitespacesAndNewlines)
let textRemoved = text?.replacingOccurrences(of: "\u{ef}", with: "", options: NSString.CompareOptions.literal, range:nil)
textView.text = textRemove

我想在這里刪除\u{ef}字符。 但是在textRemoved中它沒有發生。 請幫我怎么做。

我正在使用 Xcode 10。看起來低於 Xcode 版本比 10 工作正常。 它是 Xcode 10 的錯誤嗎?

這是一個遲到的答案,但我也很難在字符串中替換 "\\u{ef}"。 在調試過程中,當鼠標懸停在字符串上時,它顯示了 \\u{ef} 的存在,但在描述中打印時,它只顯示了空格。

let str = "\u{ef} Some Title"
print(str) //" Some Title"

我嘗試replacingOccurrences(of: "\\u{ef}", with: "", options: NSString.CompareOptions.literal, range: nil).trimmingCharacters(in: .whitespaces)但它也失敗了。

所以我使用了下面的代碼片段,它就像奇跡一樣工作。

 let modifiedStr = str.replacingOccurrences(of: "\u{fffc}", with: "", options: NSString.CompareOptions.literal, range: nil).trimmingCharacters(in: .whitespaces)
print(modifiedStr)  //"Some Title"

希望這對某人有幫助!!

我也面臨同樣的問題"\\u{e2}" 我已經搜索了很多,但找不到任何答案。 然后我嘗試了下面的代碼,這對我有用。

var newString = ""
for char in strMainString.unicodeScalars{
    if char.isASCII{
        newString += String(char)
    }
}

希望這也適用於您。

在 Xcode 10 Playground 中, \\u{00EF}字符串替換正在工作。

var a = "#bb #cccc #ddddd\u{ef}" 
a = a.replacingOccurrences(of: "\u{00EF}", with: "")

我希望這對你有用。

我嘗試了以下方法,效果很好:

replacingOccurrences(of: "�", with: " ", options: NSString.CompareOptions.literal, range: nil)

例如 1

let text = "\u{ef}\u{ef}\u{ef}\u{ef}😇哦哦哦"
        
let text1 = text.replacingOccurrences(of: "\u{fffc}", with: "", options: String.CompareOptions.literal, range: nil)

let text2 = text.replacingOccurrences(of: "\u{ef}", with: "", options: String.CompareOptions.literal, range: nil).trimmingCharacters(in: .whitespaces)

可運行的

 <img src="https://i.stack.imgur.com/styVo.png"/>

例如 2

let strBefore = textDocumentProxy.documentContextBeforeInput 
let strAfter  = textDocumentProxy.documentContextAfterInput 
var textInput = strBefore + strAfter

let textInput2 = textInput.replacingOccurrences(of: "\u{ef}", with: "", options: String.CompareOptions.literal, range: nil)
        
let textInput1 = textInput.replacingOccurrences(of: "\u{fffc}", with: "", options: String.CompareOptions.literal, range: nil).trimmingCharacters(in: .whitespaces)

可運行的

 <img src="https://i.stack.imgur.com/xGHtW.png"/>

與問題類似,但帶有\\u{e2}符號(修復是相同的):

\\u{e2}不是字符,而是以0xE2字節開頭的 UTF8 平面的子集。

所以看這里,E2是一般標點符號。 實際上有許多以\\u{e2}開頭的符號,但不限\\u{e2} ,完整的字符可以用e2 80 a8字節(行分隔符)表示。

這解釋了為什么 Xcode \\u{e2}中顯示的內容不能替換為replacingOccurrences ... 函數。 為了過濾掉正確的符號,您必須使用以下代碼段知道它是什么確切的符號:

"\u{2028}&😲".forEach { (char) in
   print(Data(char.utf8).map { String(format: "%02x", $0) }.joined(separator: " "))
 }

它打印到控制台:

e2 80 a8
26
f0 9f 98 b2

這是每個符號的字節表示。

下一步是過濾你的字符串,到這里在 3d 列中搜索你的字節和 unicode 代碼點值是你需要的(第一列),然后用像"\\u{2028}\\u{206A}..." (取決於您的排序)。

最終的函數可能如下所示:

func removingE2Symbols() -> String {
    let specialChars = "\u{202A}\u{202C}"
    return filter { !specialChars.contains($0) }
}

嘗試這個

extension String {
    var asciiString: String {
        return String(self.unicodeScalars.filter{ $0.isASCII })
    }   
}

它正在工作請再次檢查:

 let a = "#bb #cccc #ddddd\u{ef}"
 let text = a.trimmingCharacters(in: .whitespacesAndNewlines)
 let textRemoved = text.replacingOccurrences(of: "\u{ef}", with: "", options: NSString.CompareOptions.literal, range:nil)
 print(textRemoved)

在此處輸入圖片說明

暫無
暫無

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

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