使用sscanf分离波斯语(阿拉伯语)数字

4

我有一个波斯文本,如下:"۲۲۸在如果是关于承诺、支付现金等问题的情况下,法官可以根据第221条规定判决债务人以弥补因未能按时偿还债务而造成的损失。" 我的目标是从主要文本中分离出数字"۲۲۸"。如果这是一个普通的英语数字,我可以通过使用

来轻松完成。
sscanf(text,"%d %[^\t\n]", &a);

但是C语言不会将波斯数字识别为十进制数。那么我该怎么办呢?

经过一些研究,我知道Objective-C将此文本识别为UTF-8格式,解决这个问题的一种方法是用英文数字替换波斯数字。

1个回答

2
我们所做的是,在界面上显示波斯数字,但发送的数字是英文。
你所要做的就是在UI中添加一个转换器,将用户输入的所有内容转换成波斯语。但是将原始文本发送到你的应用程序中。

如果你只需要转换数字,你可以只有一个数字转换器。

顺便说一句,这只是我们使用并测试过的解决方案。但是,你可能会找到更好的解决方案。
更新
在这种情况下(无法修改用户输入),你必须尝试以下步骤:

首先 尝试了解这些数字是如何编码的。编写一个示例应用程序,接收波斯数字作为字符并打印它们以查看它们的实际情况。

第二 有一个由数字编码字符和其真实值组成的二维数组。将所有十个数字存储在其中。

第三 接收整个文本字符串并查找其中的数字。(因为现在你能够通过这些编码数字字符逐个比较每个字符)。一旦在你的查找表中出现匹配,你就可以得到它的真实值。

问题是这些源代码不是由我自己生成的,因此此选项不可用。 - Nima Abdollahzade
那么你只是接收文本吗?这是你的意思吗? - Matin Kh
为什么不尝试看看这些波斯数字是如何编码的呢?我更新了我的回答。 - Matin Kh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接