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