You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将阿拉伯单词分解为辅音与元音?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:43:16