String.replace不起作用

时间:2016-01-14 00:50:29

标签: java

import java.util.Scanner;

public class CashSplitter {
    public static void main(String[] args) {
        Scanner S = new Scanner(System.in);

        System.out.println("Cash Values");
        String i = S.nextLine();
        for(int b = 0;b<i.length(); b ++){
            System.out.println(b);
        System.out.println(i.substring(0,i.indexOf('.')+3));

        i.replace(i.substring(0, i.indexOf('.') + 3), "");
        System.out.println(i);
        System.out.println(i.substring(0, i.indexOf('.') + 3));
        }
    }
}

代码应该能够获取具有多个现金值的字符串并将其拆分为单个值。例如7.32869.32应拆分7.32,869.32等

2 个答案:

答案 0 :(得分:1)

字符串是不可变的,因此replace返回一个新的String供您使用

尝试

 i = i.replace(i.substring(0, i.indexOf('.') + 3), "");

尽管尝试使用

https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html

答案 1 :(得分:1)

您的代码存在一些问题:

  • 您希望在小数点索引
  • 中添加两个而不是三个
  • 如果不指定字符串
  • ,则无法使用replace
  • 您的代码假定没有相同的现金值。

最后一点,如果你从2.222.222.22开始,你将只获得一个现金值而不是三个,因为replace会丢弃所有三个匹配。

Java提供了一种在正则表达式上分割String的好方法:

String[] parts = S.split("(?<=[.]..)")

Demo.

正则表达式是一个后备,需要一个点后跟任意两个字符。