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