gpt4 book ai didi

ios - Swift:string.characters.count 为阿拉伯字符串返回错误的数字

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:49 26 4
gpt4 key购买 nike

我有以下用阿拉伯语编写的文本,当我调用 text.characters.count 时,它返回 298 个字符,而不是实际数字 300。

正文:

هنالك العديد من الأنواع المتوفرة لنصوص لوريم إيبسوم، ولكن الغالبية تم تعديلها بشكل ما عبر إدخال بعض النوادر أو الكلمات العشوائية إلى النص. إن كنت تريد أن تستخدم نص لوريم إيبسوم ما، عليك أن تتحقق أولاً أن ليس هناك أي كلمات أو عبارات محرجة أو غير لائقة مخبأة في هذا النص. بينما تعمل جميع مولّدات نصوص ا

提到在文本前后没有周围的空白。

utf8.characters.count 也返回相同的错误数字。

给定这样一个字符串,如何获得正确数量的字符?

最佳答案

获取 unicode scalar count 应该会给你预期的结果:

let myString = "هنالك العديد من الأنواع المتوفرة لنصوص لوريم إيبسوم، ولكن الغالبية تم تعديلها بشكل ما عبر إدخال بعض النوادر أو الكلمات العشوائية إلى النص. إن كنت تريد أن تستخدم نص لوريم إيبسوم ما، عليك أن تتحقق أولاً أن ليس هناك أي كلمات أو عبارات محرجة أو غير لائقة مخبأة في هذا النص. بينما تعمل جميع مولّدات نصوص ا"

myString.unicodeScalars.count // 300

Swift - Strings and Characters 中所述:

Behind the scenes, Swift’s native String type is built from Unicode scalar values. A Unicode scalar is a unique 21-bit number for a character or modifier, such as U+0061 for LATIN SMALL LETTER A ("a"), or U+1F425 for FRONT-FACING BABY CHICK ("🐥").

但是

无论您期望的结果如何,将“harakat”(分隔符)如“Fat-ha”、“damma”、“kasra”算作分隔字符可能会得到错误的结果

例如:如果您尝试检查单词“أولاً”的计数,您会注意到:

let myString = "أولاً"

myString.characters.count // 4
myString.unicodeScalars.count // 5

如您所见,TanweenFat-ha 字符算作一个分隔字符,除非您计算它的 unicodeScalars 值。

正如您提到的,charactercountonline.com 似乎是将“harakat”(分隔符)计为独立字符,这对于非阿拉伯语人士来说应该是合乎逻辑的,但这样算起来是错误的


非阿拉伯语观众备注:

单词“أولاً”包含一个十进制分隔符,称为“Fat-hatan”或“Tanween Fat-h”,这个分隔符 em> 被算作阿拉伯语语法中的分隔字符;使用它的目的是指示单词的拼写应该如何。对于说阿拉伯语的人来说,这个逻辑应该是显而易见的,“أولاً”这个词包含四个字符,但是当它与计数相关时不是计算机!

关于ios - Swift:string.characters.count 为阿拉伯字符串返回错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45858510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com