2017-12-28 50 views
2

フランス語で書式化されたNumberのDouble-Valueを取得しようとしています。 したがって、テキスト1 003,25は値(1003.25)として保存する必要があります。フランス語で書かれたフランス語の数値を取得する方法

public class NumberFormatTest { 
    public static void main(String[] args) throws ParseException { 
     String db = "1003.25"; 
     String manualFRA = "1 003,25"; 
     double numberDB = Double.parseDouble(db); 
     String ger = NumberFormat.getInstance(Locale.GERMAN).format(numberDB); 
     String fra = NumberFormat.getInstance(Locale.FRENCH).format(numberDB); 
     String eng = NumberFormat.getInstance(Locale.ENGLISH).format(numberDB); 

     double gerD = NumberFormat.getNumberInstance(Locale.GERMAN).parse(ger).doubleValue(); 
     double fraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(fra).doubleValue(); 
     double mfraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(manualFRA).doubleValue(); 
     double engD = NumberFormat.getNumberInstance(Locale.ENGLISH).parse(eng).doubleValue(); 

     System.out.println("From database: " + db); 

     System.out.println("\tGerman: " + ger); 
     System.out.println("\tFrench: " + fra); 
     System.out.println("\tEnglish: " + eng); 

     System.out.println("\nTo Database: "); 
     System.out.println("\tfrom German: "+ gerD); 
     System.out.println("\tfrom French: "+ fraD); 
     System.out.println("\tfrom manual French: "+ mfraD); 
     System.out.println("\tfrom Englisch: "+ engD); 
    } 
} 

From database: 1003.25 
 
\t German: 1.003,25 
 
\t French: 1 003,25 
 
\t English: 1,003.25 
 

 
To Database: 
 
\t from German: 1003.25 
 
\t from French: 1003.25 
 
\t from manual French: 1.0 
 
\t from Englisch: 1003.25

マニュアルフランスの値が1.0とではない1003.25である理由誰もが、アイデアを持っていますか? どうすれば解決できますか?実際のプログラムでは、値はTextFieldのStringとして返されます。

ご協力いただきありがとうございます。

答えて

3

フランス語の書式付きテキストのスペースは、通常のスペースではなく、NO-BREAK SPACEです。

文字列リテラルを"1\u00a0003,25"に変更すると機能します。

このテキストが外部ソースからのものである場合(例:あなたはスペースを空白なしで置き換えることができます。

parse(manualFRA.replace(' ', '\u00a0')) 
+0

ありがとうございました!時には答えがとても簡単です.... :-) – Taros

関連する問題