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

时间:2012-08-16 06:48:15

标签: c persian

我有一个波斯语文字,如:“228 درصورتيکهموضوعتعهد,تأديهيوجهنقديباشد,حاکمميتواندبارعايتمادهي221مديونرابهجبرانخسارتحاصلهازتأخيردرتأديهدينمحکومنمايد。”我的目标就是分裂 “228”,也就是一个数从正文,如果这是一个正常的英文数字,​​我可以轻松地通过

来做
sscanf(text,"%d %[^\t\n]", &a);

但是c不能将波斯数识别为十进制数。那我该怎么办?

当我做一些研究时,我知道objective-c认为这个文本是utf-8,解决这个问题的一种方法是用英文替换数字。

1 个答案:

答案 0 :(得分:2)

我们所做的是,用波斯语显示数字,但用英语发送这些数字 您所要做的就是在UI中使用转换器,当用户输入文本时,转换器将所有内容转换为波斯语。但是将原始文本发送到您的应用程序
如果你的情况只是关于数字,你可能想要只有数字的转换器
BTW,它只是我们使用的解决方案并经过测试。但是,你可能会发现一个更好的。


<强>已更新
在这种情况下(您无法修改用户的输入),您必须尝试以下步骤:

首先尝试了解这些数字是如何编码的。 编写一个示例应用程序,将波斯数字作为字符接收并打印出来以查看它们到底是什么

第二的二维数组包含number-encoded-character及其real value。将所有十个数字存储在其中。

第三次以字符串形式接收整个文本,并在其中查找数字。 (因为现在您可以将每个字符与那些编码数字字符进行比较)。只要您的查找表中有匹配项,您就可以获得其真正的​​价值。