我有一个波斯语文本,例如:“228 در صورتي که موضوع تعهد، تأديهي وجه نقدي باشد، حاکم ميتواند با رعايت مادهي ۲۲۱ مديون را به جبران خسارت حاصله از تأخير در تأديه دين محکوم نمايد."and my goal is to split "۲۲۸"that is a number from the main text,如果它是一个普通的英文数字,我可以很容易地通过
sscanf(text,"%d %[^\t\n]", &a);
但 c 无法将波斯数字识别为十进制。那我该怎么办?
因为我做了一些研究,我知道 objective-c 将这个文本识别为 utf-8,解决这个问题的一种方法是用英文数字替换数字。
最佳答案
我们所做的是,用波斯语显示数字,但用英语发送这些数字。
您所要做的就是在 UI 中有一个转换器,当用户输入他的文本时,它将所有内容转换为波斯语。但是将原始文本发送到您的应用程序。
如果您的情况只是关于数字,您可能需要一个仅适用于数字的转换器。
顺便说一句,这只是我们使用并经过测试的解决方案。但是,您可能会找到更好的。
已更新
在这种情况下(您无法修改用户的输入),您必须尝试以下步骤:
首先尝试理解这些数字是如何编码的。 编写一个示例应用程序,接收波斯数字作为字符并打印它们以查看它们的真实含义
第二个 有一个由number-encoded-character
及其真实值
组成的二维数组。将所有十个数字存储在其中。
Third 将整个文本作为字符串接收并在其中查找数字。 (因为现在您可以通过那些编码数字字符来比较每个字符)。只要在您的查找表中有匹配项,您就可以获得它的真正值(value)。
关于c - 用 sscanf 拆分波斯语(阿拉伯语)数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11982020/