【问题标题】:Particular Split Java特别拆分Java
【发布时间】:2014-04-21 22:15:54
【问题描述】:

我是一名新程序员,我对这段代码有疑问。

public static String getString() throws IOException {

    String content = null;
    File folder = new File("C:\\Soluzioni.txt");
    content = FileUtils.readFileToString(folder) + "\n";
    String remainingString = content.substring(content.indexOf("["),
            content.lastIndexOf("]") + 1);
    System.out.println(remainingString);    // Output 1.
    return remainingString;

}

当我使用这个方法时

public static String[] arg() throws IOException {
    String[] strArray = getString().split("\\s+,0");
    System.out.println(Arrays.toString(strArray));  //Output 2.
    return strArray;
}

我的问题是这样的:

  • 第一个输出:[-2,-8] [8,-4] [-3,2] [4,-1]
  • 第二个输出:[[-2,-8] [8,-4] [-3,2] [4,-1]]

现在我想要相同的输出(相同)。我该怎么做?谢谢!

【问题讨论】:

  • 怎么了?你也可以添加 Soluzioni.txt 吗?
  • 当然,Soluzioni.txt 是 [-2,-8] [8,-4] [-3,2] [4,-1]
  • [] 由 Arrays.toString 添加。你的数组中没有它
  • @SnakeDoc 为什么?它是意大利语(或具有相同单词的其他语言)
  • 好的,抱歉这个白痴问题。我太菜鸟了谢谢。

标签: java split


【解决方案1】:

不要使用 Arrays.toString 并循环遍历数组的内容,自己单独打印字符串。

【讨论】:

    【解决方案2】:

    您得到不同输出的原因是因为您要打印 2 个不同的东西:

    输出 1:

    System.out.println(remainingString); 
    

    输出 2:

    System.out.println(Arrays.toString(strArray));
    

    您正在打印 2 个不同的对象。所以你有两个选择:

    1) 完全避免这个问题。打印您的字符串而不拆分它:

    System.out.println(getString());
    

    2) 自己格式化。这实际上提供了 2 个子选项。

    a) 获取第三方库,例如 StringUtils,其中包含 join 函数,让您的生活更轻松。如果这是真实世界的代码并且您不能执行选项 1,这可能就是您想要做的;不要重新发明轮子。

    b) 编写代码自己进行连接。这并不是那么难。你有一个字符串列表;您只需要遍历它们并在除最后一个之外的每个之后添加一个空格(或删除最后一个之后的空格)。我将把编写这段代码作为练习留给你,因为这是你在做作业时会做的事情。

    【讨论】:

      【解决方案3】:

      最简单的解决方案是手动删除方括号。

      String output = Arrays.toString(strArray);
      System.out.println(output.substring(1, output.length() -2);
      

      【讨论】:

        猜你喜欢
        • 2015-08-08
        • 2014-01-30
        • 1970-01-01
        • 2014-02-03
        • 2020-07-24
        • 2020-10-04
        • 1970-01-01
        • 2023-03-26
        • 2019-01-11
        相关资源
        最近更新 更多