如何仅为整数部分修剪字符串

时间:2013-03-05 11:44:14

标签: java regex

我有一个字符串可以包含"45""45.00""45.0""45.000""45.23"等值。对于所有这些我想要保存"45"如果小数部分全部为0,则为"45.23"

我该怎么办?我应该使用正则表达式吗?

6 个答案:

答案 0 :(得分:0)

你可以在小数点上拆分字符串并取第一个元素:

java.util.Arrays.toString(testString.split("\\.")

答案 1 :(得分:0)

是的,你可以使用正则表达式,试试这个

    s = s.replaceAll("(.?)(\\.0+)?", "$1");

答案 2 :(得分:0)

使用StringTokenizer进行Tokenize。作为分隔符

如果第二个令牌为零,则忽略第二个令牌,否则考虑第二个令牌

示例代码

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++;
 }
}

答案 3 :(得分:0)

使用以下内容:

s.replaceAll("\\.0+", "")

答案 4 :(得分:0)

嗯,经过一番搜索,我想我找到了你要找的东西。无需正则表达式。 Java中有一个名为DecimalFormat的十进制格式专用类,建议您查看如何在此page中格式化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

答案 5 :(得分:0)

我假设您的字符串由,,分隔。

如果您需要双打列表,可以使用:

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