【问题标题】:Java split function eliminating spacesJava拆分功能消除空格
【发布时间】:2015-04-27 19:47:21
【问题描述】:

我试图将字符串放入一个有空格作为分隔符的数组中,它工作得很好,除了第一个字符串前面有一个空格,所以数组中的第一个元素是“”而不是第一个字符串。

    public static String[] loadMessage(String fileName)
        throws FileNotFoundException {
    String[] s = null;
    File f = new File(fileName + ".txt");
    Scanner inFile = new Scanner(f);
    while (inFile.hasNext()) {
        s = inFile.nextLine().split(" ");

    }
    inFile.close();
    return s;

}

是否有任何简单的解决方案,或者我是否必须编写另一个扫描器和定界符等等。

【问题讨论】:

标签: java split delimiter


【解决方案1】:

在删除前导和尾随空格的每个读取行上调用 String.trim()

s = inFile.nextLine().trim().split(" ");

您也可以使用Files.readAllLines() 将所有行读入List

for (String line : Files.readAllLines(Paths.get(fileName + ".txt",
                 StandardCharsets.UTF_8))) {
    String[] words = line.trim().split(" ");
    // do something with words
}

【讨论】:

    【解决方案2】:

    使用trim() 方法删除前导和尾随空格:

    s = inFile.nextLine().trim().split(" ");
    

    但是,正如@tnw 指出的那样,您的代码中只考虑了最后一行...

    【讨论】:

    • 是的,我知道,它只会抓取一条线,它可能很懒,但现在它只需要抓取一条。 @tnw
    【解决方案3】:

    你可以在拆分前使用trim()方法。

    【讨论】:

      【解决方案4】:

      你也可以使用正则表达式。如果你想节省第一个空间,你需要这样的东西吗:

      s = inFile.nextLine().split("[^s]\\s+"); 
      

      如果你有兴趣,你会了解更多关于正则表达式here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 2012-05-20
        • 2013-01-14
        相关资源
        最近更新 更多