如何分解阿拉伯字母?

问题描述 投票:0回答:1

我需要将一个阿拉伯单词分解为辅音和元音。例如,“ََََ”有三个辅音和三个元音,因此我希望它的长度为 6 而不是 3。但是:

let t = "ضَرَبَ"
let ud = t.decomposedStringWithCanonicalMapping
print("ud Length = \(ud.count)")

我得到 3 而不是 6...如何将此字符串分解为以下数组:

"\u{0636}\u{064e}\u{0631}\u{064e}\u{0628}\u{064e}"
swift string unicode arabic
1个回答
1
投票

您的目标是考虑代码点而不是字符(应用标准化后)。您可以使用

.unicodeScalars
来做到这一点:

print("ud Length = \(ud.unicodeScalars.count)")  // ud Length = 6
                        ^^^^^^^^^^^^^^

请记住,这不仅仅是“辅音和元音”。像 shaddah 和 nunation 这样的东西在标准化后也将是代码点(我认为这对您的用例有好处;只是需要记住的事情)。

您关于“将此字符串分解为以下数组”的问题有些误导。您给出的示例是字符串,而不是数组。但重要的是,它与 t

 相同的字符串。 (用 
==
检查它。)但是,如果您想要一个 UnicodeScalars 数组,那就是
Array(ud.unicodeScalars)

© www.soinside.com 2019 - 2024. All rights reserved.