0

、、、、など"45"の値を持つことができる文字列があります。これらすべてについて、すべて小数部の場合は保存し、そうでない場合は."45.00""45.0""45.000""45.23""45"0"45.23"

どうすればいいですか?これには正規表現を使用する必要がありますか?

4

6 に答える 6

0

文字列を小数点で分割して、最初の要素を取得することができます。

java.util.Arrays.toString(testString.split("\\.")
于 2013-03-05T11:48:04.933 に答える
0

はい、正規表現を使用できます。これを試してください

    s = s.replaceAll("(.?)(\\.0+)?", "$1");
于 2013-03-05T11:48:55.213 に答える
0

以下を使用してください。

s.replaceAll("\\.0+", "")
于 2013-03-05T12:22:07.977 に答える
0

さて、少し調べてみたら、探しているものが見つかったと思います。正規表現でそれを行う必要はありません。JavaにはDecimalFormatと呼ばれる10進フォーマット用の特殊なクラスがあり、このページでJavaで数値をフォーマットする方法を確認することをお勧めします。次に例を示します。

    public class NumberFormat {

    public static void main(String[] args){
        DecimalFormat myFormatter = new DecimalFormat("###.##");
        System.out.println(myFormatter.format(45));
        System.out.println(myFormatter.format(45.000));
        System.out.println(myFormatter.format(45.23));
        System.out.println(myFormatter.format(45.258));

    }
}

出力を生成します:

  45
  45
  45,23
  45,26
于 2013-03-05T12:22:26.603 に答える
0

でStringTokenizerを使用してトークン化します。区切り文字として

2番目のトークンがゼロの場合は2番目のトークンを無視し、そうでない場合は2番目のトークンを検討します

サンプルコード

StringTokenizer st = StringTokenizer(s,".");
int count = 0;
while(st.hasTokens)
{
 if (count==1)
 {
   // Read the token and compare it to zero and modify the original string s and your further processing
 }
 else{
    st.nextToken();
    count++;
 }
}
于 2013-03-05T11:50:53.997 に答える
0

,あなたの文字列は、またはで区切られていると思います,

double のリストが必要な場合は、次を使用できます。

List<Double> lst = new ArrayList<Double>();
for(String s : yourString.split(",\\s?")) {
    try {
        Double double = Double.valueOf(s);
        lst.add(double);
    } catch(NumberFormatException nfe) {
        nfe.printStackTrace();
    }
}

番号のリストが必要な場合は、次を使用できます。

List<Number> lst = new ArrayList<Number>();
for(String s : yourString.split(",\\s?")) {
    try {
        Double double = Double.valueOf(s);
        if(double == (int)double) {
            lst.add(double);
        } else {
            lst.add((Integer)double.intValue());
        }
    } catch(NumberFormatException nfe) {
        nfe.printStackTrace();
    }
}
于 2013-03-05T12:22:52.727 に答える