2016-07-14 15 views
0

英語以外の言語の数字を含む文字列を英語の数字文字列に変換したい。例えば :
入力:すべての外国の文字列番号を英語の数字文字列に変換する

"۱۲۳۴۵۶۷۸۹"

出力:これは私のコードは

"123456789"

ですが、それでも出力は入力と同じである:あなたが取得するCharacter.getNumericValueを使用することができます

String text = String.format(Locale.US ,"۱۲۳۴۵۶۷۸۹"); 
+0

は、これは間違いなくどのように '文字列ではありません。 format'が動作します。あなたは自分の翻訳者を実装する必要があります。 – Mena

答えて

3

文字の数値。その後、Character.forDigitラテン数にそれを翻訳するには、次のint型のコードポイント(中国語)については

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); 

Ideone Demo

+0

私はそれをテストしました、出力は幾分奇妙な文字です – ReZa

+1

@ReZaあなたの入力で、Ideone Demo linkedでテストしました。出力は '123456789'です。 –

+0

ok。ありがとうございました。それはまたchineese数で働くでしょうか? – ReZa

2

すぎて、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)); 
+0

ありがとうございます。これも働いた。 – ReZa

関連する問題