kel*_*dik 4 string arabic diacritics swift arabic-support
我正在尝试删除阿拉伯文本变音符号。例如我需要将其转换\xd9\x8e\xd8\xa8
为此\xd8\xa8
,这是我的代码:
if (text != "") {\n for char in text! {\n print(char)\n print(char.unicodeScalars.first?.value)\n if allowed.contains("\\(char)"){\n newText.append(char)\n }\n }\n self.textView.text = text!\n} else {\n// TODO :\n// show an alert\n print("uhhh no way")\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n我已经尝试过这些解决方案,但没有运气:
\n\n\n\n\n您可以使用正则表达式,试试这个代码
\n\n let myString = "\xd8\xa7\xd9\x84\xd9\x92\xd8\xad\xd9\x8e\xd9\x85\xd9\x92\xd8\xaf\xd9\x8f \xd9\x84\xd9\x90\xd9\x84\xd9\x91\xd9\x8e\xd9\x87\xd9\x90 \xd8\xb1\xd9\x8e\xd8\xa8\xd9\x91\xd9\x90 \xd8\xa7\xd9\x84\xd9\x92\xd8\xb9\xd9\x8e\xd8\xa7\xd9\x84\xd9\x8e\xd9\x85\xd9\x90\xd9\x8a\xd9\x86\xd9\x8e"\n let regex = try! NSRegularExpression(pattern: "[\\\\u064b-\\\\u064f\\\\u0650-\\\\u0652]", options: NSRegularExpression.Options.caseInsensitive)\n let range = NSMakeRange(0, myString.unicodeScalars.count)\n let modString = regex.stringByReplacingMatches(in: myString, options: [], range: range, withTemplate: "")\n print(modString)\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n输出:\xd8\xa7\xd9\x84\xd8\xad\xd9\x85\xd8\xaf\xd9\x84\xd9\x84\xd9\x87\xd8\xb1\xd8\xa8\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86
\n
使用这个扩展:
extension String {
/// strip combining marks (accents or diacritics)
var stripDiacritics: String {
let mStringRef = NSMutableString(string: self) as CFMutableString
CFStringTransform(mStringRef, nil, kCFStringTransformStripCombiningMarks, false)
return mStringRef as String
}
}
Run Code Online (Sandbox Code Playgroud)