我有一个波斯语文字,如:“228 درصورتيکهموضوعتعهد,تأديهيوجهنقديباشد,حاکمميتواندبارعايتمادهي221مديونرابهجبرانخسارتحاصلهازتأخيردرتأديهدينمحکومنمايد。”我的目标就是分裂 “228”,也就是一个数从正文,如果这是一个正常的英文数字,我可以轻松地通过
来做sscanf(text,"%d %[^\t\n]", &a);
但是c不能将波斯数识别为十进制数。那我该怎么办?
当我做一些研究时,我知道objective-c认为这个文本是utf-8,解决这个问题的一种方法是用英文替换数字。
答案 0 :(得分:2)
我们所做的是,用波斯语显示数字,但用英语发送这些数字
您所要做的就是在UI中使用转换器,当用户输入文本时,转换器将所有内容转换为波斯语。但是将原始文本发送到您的应用程序
如果你的情况只是关于数字,你可能想要只有数字的转换器
BTW,它只是我们使用的解决方案并经过测试。但是,你可能会发现一个更好的。
<强>已更新强>
在这种情况下(您无法修改用户的输入),您必须尝试以下步骤:
首先尝试了解这些数字是如何编码的。 编写一个示例应用程序,将波斯数字作为字符接收并打印出来以查看它们到底是什么。
第二的二维数组包含number-encoded-character
及其real value
。将所有十个数字存储在其中。
第三次以字符串形式接收整个文本,并在其中查找数字。 (因为现在您可以将每个字符与那些编码数字字符进行比较)。只要您的查找表中有匹配项,您就可以获得其真正的价值。