deleteCharAt()在Java中从字符串中删除多个字符

deleteCharAt()在Java中从字符串中删除多个字符,java,stringbuilder,Java,Stringbuilder,我正在尝试从字符串中删除一些不需要的字符。我正在读取一个.txt文件,我想删除文件中的所有逗号。当我使用deletCharAt()时,它会删除多个字符。 下面是.txt文件的一个示例: 1,2,0 3,4,5 6,7,8 这是我的密码: public String loadStartBoard(String filename) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(f

我正在尝试从字符串中删除一些不需要的字符。我正在读取一个.txt文件,我想删除文件中的所有逗号。当我使用deletCharAt()时,它会删除多个字符。 下面是.txt文件的一个示例:

1,2,0
3,4,5
6,7,8
这是我的密码:

public String loadStartBoard(String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(filename));

     try {

        StringBuilder sb = new StringBuilder();
        String line = reader.readLine();

        while (line != null) {
            sb.append(line);
            sb.append("\n");
            sb.deleteCharAt(1);
            //sb.deleteCharAt(2);
            //sb.deleteCharAt(5);
            //sb.deleteCharAt(6);
            //sb.deleteCharAt(9);
            //sb.deleteCharAt(10);

             line = reader.readLine();

        }
        startState = sb.toString();
        return startState;

    } finally {
        reader.close();
    }
}

这将提供以下输出:

103,4,5
6,7,8

因此,sb.deleteCharAt(1)将“、2”作为一个字符删除,我不知道为什么。非常感谢您的帮助。

您正在从StringBuffer中删除,因此您将继续从导入的第一行中删除第二个字符

实现这一点的最简单方法可能是使用第二个StringBuilder:

    BufferedReader reader = new BufferedReader(new StringReader("1,2,0\n3,4,5\n6,7,8"));

    StringBuilder sb = new StringBuilder();
    String line = reader.readLine();

    StringBuilder currentLine = new StringBuilder();

    while (line != null)
    {
        currentLine.delete(0, currentLine.capacity());
        currentLine.append(line);
        currentLine.deleteCharAt(1);

        sb.append(currentLine.toString());
        sb.append("\n");

        line = reader.readLine();

    }
    System.out.println(sb.toString());

注意,对于示例代码,我已将您的
FileReader
更改为
StringReader
。您可以轻松地将其更改回…

如果您的文件包含第二行(空白),则可以轻松地解释这一点。