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

标签 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(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。您可以轻松地将其改回来...

关于java - deleteCharAt() 从 Java 字符串中删除多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024520/

相关文章:

java - 如何在 StringBuilder 中追加星号 * ?

java - 当我运行我的小程序时魔法值错误

java - Maven pom.xml 添加另一个项目

java - NumberFormat.getCurrencyInstance() 不返回语言环境中国和法国的货币符号 (jdk-1.8)

java - 如何在 spring-data-neo4j 中使用时间戳

powershell - 如何将颜色线插入 StringBuilder 对象

java - 使用 Tasklet 在 Spring Batch 中或在 CompositeItemWriter 中创建逻辑?

java - 特殊字符不适用于 StringBuilder.append(String)

Java StringBuilder 字符追加返回不需要的数字

Java - 有多少字符串连接应该提示使用 StringBuilder?