JAVA trim()不起作用

时间:2013-11-18 17:46:30

标签: java trim

这就是我所拥有的:

public void readFile(String fileToOpen) {
    File myFile = new File(fileToOpen);
    try {
        Scanner inFile = new Scanner(myFile);
        while (inFile.hasNext()) {
            String input = inFile.nextLine();
            String [] readString = input.split(",");
            for (int i = 0; i < readString.length; i++) {
                readString[i].trim();
            }
            System.out.println(readString[0] + readString[1] + readString[2] + readString[3] + readString[4] + readString[5]);
            Point myPoint = new Point(Integer.parseInt(readString[1]), Integer.parseInt(readString[2]));
            if (readString[0].toLowerCase().equals("man")) {
                Man myMan = new Man(myPoint, Integer.parseInt(readString[3]), Integer.parseInt(readString[4]), readString[5]);
                this.myList.add(myMan);
            } else if (readString[0].toLowerCase().equals("woman")) {
                Woman myWoman = new Woman(myPoint, Integer.parseInt(readString[3]), Integer.parseInt(readString[4]), readString[5]);
                this.myList.add(myWoman);
            } else {
                inFile.close();
                throw new IllegalArgumentException();
            }
        }
        inFile.close();
    }

我知道它并不完美,我只是在学习。但是,trim()应该在这里工作......

我的输入文件是:

man, 300, 200, 3, 2, Bill

如果我要将修剪后的字符串添加到一起,我应该得到:

man30020032Bill

但我得到了:

man 300 200 3 2 Bill

我不知道为什么。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:9)

字符串是不可变的。这样:

myString.trim(); 

创建并返回一个新修剪的String,但对myString引用的原始String不执行任何操作。由于新的String永远不会分配给变量,因此它会挂起并最终被垃圾回收。要获取和使用修剪过的String,必须将结果分配给变量,例如原始变量(如果需要):

myString = myString.trim(); 

所以在你的情况下:

readString[i] = readString[i].trim();

答案 1 :(得分:6)

更改

for (int i = 0; i < readString.length; i++) {
    readString[i].trim();
}

 for (int i = 0; i < readString.length; i++) {
     readString[i] =  readString[i].trim();
 }

因为String对象是不可变的,因此trim()方法返回一个必须分配给数组的新实例。

答案 2 :(得分:6)

字符串是不可变的,因此这不会改变String

的内容
readString[i].trim();

返回更改的值。尝试

readString[i] = readString[i].trim();

答案 3 :(得分:4)

Java中的字符串是不可变的(它们永远不会改变)。像'trim()'这样的东西会返回新值,而不会更新当前值。

尝试:

readString[i] = readString[i].trim()