假设我有一个字符串
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
中却没有发生。请帮我怎么做。
我正在使用Xcode10。看起来低于10的Xcode版本正在运行 精细。是Xcode 10的错误吗?
答案 0 :(得分:1)
我也遇到了与“ \ u {e2}” 相同的问题。我已经搜索了很多,但是找不到任何答案。然后我尝试了下面的代码,它对我有用。
var newString = ""
for char in strMainString.unicodeScalars{
if char.isASCII{
newString += String(char)
}
}
希望也对您有用。
答案 1 :(得分:0)
在Xcode 10 Playground中,\u{00EF}
的字符串替换有效。
var a = "#bb #cccc #ddddd\u{ef}"
a = a.replacingOccurrences(of: "\u{00EF}", with: "")
我希望这对您有用。
答案 2 :(得分:0)
我尝试了以下方法,它就像一种魅力:
replacingOccurrences(of: "�", with: " ", options: NSString.CompareOptions.literal, range: nil)
答案 3 :(得分:0)
这是一个较晚的答案,但我也很难替换字符串中的“ \ 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"
希望这对某人有帮助!
答案 4 :(得分:0)
例如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"/>
答案 5 :(得分:0)
与问题类似,但带有setData
符号(修复方法相同):
\u{e2}
不是字符,而是以\u{e2}
字节开头的UTF8平面的子集。
因此,请看here,E2是常规的标点符号。
实际上有许多以0xE2
开头但不限于此的符号,完整字符可以表示为f。 \u{e2}
个字节(行分隔符)。
这说明了为什么Xcode e2 80 a8
中显示的内容不能用\u{e2}
...函数代替。为了滤除正确的符号,您必须知道它是什么确切的符号,例如通过使用以下代码段:
replacingOccurrences
它打印到控制台:
"\u{2028}&?".forEach { (char) in
print(Data(char.utf8).map { String(format: "%02x", $0) }.joined(separator: " "))
}
每个符号的字节表示形式。
下一步是过滤字符串,转到here,然后在3d列中搜索您的字节和unicode代码点值是您所需要的(第一列),然后将其写入诸如e2 80 a8
26
f0 9f 98 b2
这样的快速代码中(取决于您的排序)。
最终功能可能类似于:
"\u{2028}\u{206A}..."
答案 6 :(得分:-1)