0

webelementから通貨を読み込んでいるシナリオが1つあり、文字列です。いくつかのP & L計算のためにそれを数値形式で変換する必要があります。webelementから文字列を読み込み、小数点への変換

1232123.0 
345235.0 

期待される結果:コード

public class NumberFormat { 

    public static void main(String[] args) { 
     //String str = "$9.9967"; 
     String str1 = "€12,32123"; 
     String str2 = "€3.452,35"; 
     str1 = str1.replace(",", ".").replace(".", "").replaceAll("[^0-9.]", ""); 
     str2 = str2.replace(",", ".").replace(".", "").replaceAll("[^0-9.]", ""); 
     double str1Ch = Double.parseDouble(str1); 
     double str2Ch = Double.parseDouble(str2); 
     System.out.println(str1Ch); 
     System.out.println(str2Ch); 
    } 

} 

実際の結果の下にしようとしました

12.32123 
3452.35 

私は私が期待してい何を得ていないのですが、私は両方の変換同時を実行する必要があります(空白、空白、ドットをカンマ)

コードが機能しない理由と、異なる国の通貨を読んで数値形式に変換するための提案が必要です。

+1

が期待される結果は何ですか? –

+0

12.32123 3452.35 –

+0

通貨文字列を 'NumberFormat'クラスに変換する必要があります。 mor情報はこちらhttps://stackoverflow.com/a/6016642/1967021 –

答えて

2

つを使用してこれを行うことができます。 DecimalFormatSymbolsを使用して小数点区切り記号またはグループ分け記号を設定することができます。

デモ:

DecimalFormat df = new DecimalFormat("€#,###.#"); 
DecimalFormatSymbols dfSymbols = new DecimalFormatSymbols(); 
dfSymbols.setDecimalSeparator(','); 
dfSymbols.setGroupingSeparator('.'); 
df.setDecimalFormatSymbols(dfSymbols); 

String str1 = "€12,32123"; 
String str2 = "€3.452,35"; 
double str1Ch = df.parse(str1).doubleValue(); 
double str2Ch = df.parse(str2).doubleValue(); 

System.out.println(str1Ch);//12.32123 
System.out.println(str2Ch);//3452.35 
1

カンマとピリオドの置換記号を混在させました。

最初にピリオドを空の文字列に置き換え、ピリオドでカンマを置き換えます。以下に示すように。

str1 = str1.replace(".", "").replace(",", ".").replaceAll("[^0-9.]", ""); 
    str2 = str2.replace(".", "").replace(",", ".").replaceAll("[^0-9.]", ""); 
+0

ありがとう@RinorNeedsHelp、それは働いた。 –

-1

これを試してください。

String str1 = "€12,32123"; 
String str2 = "€3.452,35"; 
str1 = str1.replaceAll("[^0-9,]", "").replace(",", "."); 
str2 = str2.replaceAll("[^0-9,]", "").replace(",", "."); 
double str1Ch = Double.parseDouble(str1); 
double str2Ch = Double.parseDouble(str2); 
System.out.println(str1Ch); 
System.out.println(str2Ch); 

結果

12.32123 
3452.35 
1

あなたは(ここではDecimalFormatに基づいて)、独自のNumberFormatを作成することができたオプションのNumberFormat

String s1 = "€3.452,35"; 

Locale locale = null; 
switch (s1.charAt(0)) { 
    case '€': 
     locale = Locale.FRANCE; 
     break; 
    case '$': 
     locale = Locale.US; 
     break; 
    //Add any other money you want 
    default: 
     //Money unexpected 
} 

s1 = s1.substring(1, s1.length()) 
     .replaceAll("[. ]", "") 
     .replaceAll(",", "."); 
System.out.println(s1); 
NumberFormat nf = NumberFormat.getCurrencyInstance(locale); 
System.out.println(nf.format(new BigDecimal(s1))); 
+0

thanks.Triedですが、getCurrencyInstanceやその他のメソッドは表示されません。私の側から何か問題がありますか? –

関連する問題