如何将阿拉伯单词分解为辅音与元音?Swift字符串处理疑问
Swift 阿拉伯语字符分解为辅音与元音的解决方案
Swift 的 count 方法统计的是Unicode字形簇(Grapheme Clusters),阿拉伯语中辅音与附加元音会组合成一个视觉上的单字符,所以即便用 decomposedStringWithCanonicalMapping 分解后,count 依然返回3,而非底层的6个Unicode标量数。
要得到包含独立辅音和元音的数组,需要直接访问字符串的 unicodeScalars 属性,它会暴露每个底层的Unicode标量值:
let t = "ضَرَبَ" // 先做规范分解,确保组合字符拆分为基础字符+附加标记 let decomposedStr = t.decomposedStringWithCanonicalMapping // 转换为Unicode标量数组 let unicodeScalars = Array(decomposedStr.unicodeScalars) // 映射为单个字符的字符串数组 let splitArray = unicodeScalars.map { String($0) } print(splitArray) // 输出结果: ["ض", "َ", "ر", "َ", "ب", "َ"] // 对应你需要的Unicode编码序列: "\u{0636}\u{064e}\u{0631}\u{064e}\u{0628}\u{064e}"
如果需要直接输出Unicode编码格式的字符串,可以遍历标量的 value 属性转换:
let unicodeCodeStr = unicodeScalars.map { "\\u{\(String($0.value, radix: 16, uppercase: false))}" }.joined() print(unicodeCodeStr) // 输出: \u{0636}\u{064e}\u{0631}\u{064e}\u{0628}\u{064e}
内容的提问来源于stack exchange,提问作者silberz
相关产品推荐
相关产品推荐

