【问题标题】:How to delete spaces In an 2D-Array in Java?如何在Java中删除二维数组中的空格?
【发布时间】:2015-03-13 01:56:59
【问题描述】:

我有一个文本文件。我正在阅读它,然后将其放入二维阵列中。有空格。我需要摆脱那些空间。但我不能正确使用trim。这是我的代码:

while ((line = br.readLine() ) != null ){

    char[] row = line.toCharArray();
    line.trim();
    int counter = 0;
    for (int i = 0; i < row.length; i++) {
        maze[counter][i] = row[i];
        System.out.print(maze[i]);
        counter++;
    }
    System.out.printf("%n");
}

输出如下:

1                    1                    1                    0
0                    0                    1                    0
0                    0                    1                    0
0                    9                    1                    0

我阅读的文本文件中的元素之间有一个空格。但是我得到了太多的空格作为输出。我需要把它当作

1110
0010
0010
0910

我想我应该使用trim方法,但我想不通。

【问题讨论】:

  • String#splittrim 也可能有帮助...哦,line.trim(); 应该是 line = line.trim();
  • @KickButtowski 当然............

标签: java arrays string trim


【解决方案1】:

您可以将String#split\s+ 之类的正则表达式一起使用,例如...

    String text = "1                    1                    1                    0";
    String elements[] = text.split("\\s+");
    for (String value : elements) {
        System.out.println("[" + value + "]");
    }

哪些输出

[1]
[1]
[1]
[0]

(大括号用来证明没有空格)

在您的示例中,我可能仍然想继续使用 line = line.trim();,以确保没有可能导致包含空值的前导或尾随空格...

【讨论】:

    【解决方案2】:

    您可以使用(string).replace(" ", '\0') 将所有空格替换为空格

    例如:

        String line = "1 2  2 3 4 2 122 23  3  3 3 3";   //example
        line = line.replace(' ', '\0');  //'\0' is the key for blank (or nothing)
        System.out.println(line);
    

    会产生

    122342122233333
    

    这将去掉空格,只使用有效的输入(即数字)。它说的是行,但唯一的输入是相同的字符。

    希望这会有所帮助。

    【讨论】:

    • 你可能想通过一个代码示例运行它,看看你实际得到了什么......
    • " " 只考虑一个空格,而 op 不止一个空格
    • 这并不是说有什么“错误”,但您可能想检查一下实际产生了什么(提示,它不会产生一个由 4 个元素组成的数组)
    • @lacraig2 你的结果是什么?
    • split(" ") 将在每个空格上拆分,因此当您有两个空格时,它将创建一个空结果,因为它试图在两个空格之间断开...
    【解决方案3】:

    对我来说最快的方法是使用嵌套循环单独打印数组的每个元素。例如

    String [][] maze = new String [4][4];
    
         for (int i = 0; i < maze.length; i++) {
    
             maze[i][0] = "1";
             maze[i][1] = "0";
             maze[i][2] = "1";
             maze[i][3] = "0";
    
         }
    
         for (int k =0;k<maze.length;++k){
    
             for(int j=0;j<maze.length;++j)
             {
                 System.out.print(maze[k][j]);
             }
             System.out.println();
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多