比较 swift 3 中字符串中的英语和非英语

sha*_*bow 2 ios swift swift3

我正在开发一个多语言应用程序,\n在某些地方我需要计算英语字符和阿拉伯语字符来决定

\n\n
nameLabel.textAlignment = .right\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
nameLabel.textAlignment = .left\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如像这样的一些文本:

\n\n
\n

\xd8\xa8\xd8\xa7\xd8\xb2\xdb\x8c 愤怒的小鸟 \xd8\xa8\xd8\xb3\xdb\x8c\xd8\xa7\xd8\xb1 \xd8\xa8\xd8\xa7\xd8\xb2 \xdb\x8c \xd8\xac\xd8\xb0\xd8\xa7\xd8\xa8\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa

\n
\n\n

需要.right文本对齐和

\n\n
\n

愤怒的小鸟是一款令人兴奋的游戏

\n
\n\n

需要.left文本对齐!\n我想通过计算服务器中的英语和非英语字符来判断这一点。

\n\n

这里的最佳实践是什么?

\n

Eri*_*ric 5

您可以检查所有字符,然后计算英语和非英语字符的数量。之后,您可以比较这些计数并决定您想要的对齐方式:

let characterset = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") //add whatever characters you find English
var amountOfEnglishChars = 0
var amountOfNonEnglishChars = 0

for char in string.unicodeScalars {
    if characterset.contains(char) {
        amountOfEnglishChars += 1
    }
    else {
        amountOfNonEnglishChars += 1
    }
}

nameLabel.textAlignment = amountOfEnglishChars > amountOfNonEnglishChars ? .left : .right
Run Code Online (Sandbox Code Playgroud)