Java 将所有外来字符串数字转换为英文数字字符串

Java 将所有外来字符串数字转换为英文数字字符串,java,android,Java,Android,我想将包含非英语数字的字符串转换为英语数字字符串。 例如: 输入: “۱۲۳۴۶۷۸۹” 输出: “123456789” 这是我的代码,但输出仍然与输入相同: String text = String.format(Locale.US ,"۱۲۳۴۵۶۷۸۹"); 可以使用获取字符的数值;然后把它翻译成拉丁数字: char[] ch = string.toCharArray(); for (int i = 0; i < ch.length; ++i) { if (Character

我想将包含非英语数字的字符串转换为英语数字字符串。 例如:
输入:

“۱۲۳۴۶۷۸۹”

输出:

“123456789”

这是我的代码,但输出仍然与输入相同:

String text =  String.format(Locale.US ,"۱۲۳۴۵۶۷۸۹");
可以使用获取字符的数值;然后把它翻译成拉丁数字:

char[] ch = string.toCharArray();
for (int i = 0; i < ch.length; ++i) {
  if (Character.isDigit(ch[i])) {
    ch[i] = Character.forDigit(Character.getNumericValue(ch[i]), 10);
  }
}
String translated = new String(ch);
char[]ch=string.toCharArray();
对于(int i=0;i

您可以使用获取字符的数值;然后把它翻译成拉丁数字:

char[] ch = string.toCharArray();
for (int i = 0; i < ch.length; ++i) {
  if (Character.isDigit(ch[i])) {
    ch[i] = Character.forDigit(Character.getNumericValue(ch[i]), 10);
  }
}
String translated = new String(ch);
char[]ch=string.toCharArray();
对于(int i=0;i
对于int代码点(中文),java 8样式:

String s = "۱۲۳۴۵۶۷۸۹";
int[] cps = s.codePoints()
        .map((cp) -> Character.isDigit(cp) ? '0' + Character.digit(cp, 10)  : cp)
        .toArray();
System.out.println(new String(cps, 0, cps.length));
对于int代码点(中文),java 8风格:

String s = "۱۲۳۴۵۶۷۸۹";
int[] cps = s.codePoints()
        .map((cp) -> Character.isDigit(cp) ? '0' + Character.digit(cp, 10)  : cp)
        .toArray();
System.out.println(new String(cps, 0, cps.length));

这绝对不是
String.format
的工作方式。您必须实现自己的转换器。这绝对不是
String.format
的工作方式。您必须实现自己的翻译器。我对它进行了测试,结果有些奇怪characters@ReZa我在Ideone演示链接中对您的输入进行了测试。输出是
123456789
@ReZa自己试试!我测试过了,不会的。同样,在您的新编辑中,我得到了以下错误:错误:(43,53)java:找不到适用于getNumericValue(char,int)@ReZa的合适方法请重试。我对其进行了测试,结果有些奇怪characters@ReZa我在Ideone演示链接中对您的输入进行了测试。输出是
123456789
@ReZa自己试试!我测试过了,不会的。同样,通过您的新编辑,我得到了以下错误:error:(43,53)java:找不到适合getNumericValue(char,int)@ReZa的方法,请重试。