【问题标题】:How to use comma and dot as delimiter in addition with Java default delimiter除了 Java 默认分隔符之外,如何使用逗号和点作为分隔符
【发布时间】:2023-03-28 21:07:02
【问题描述】:

我有一个文本文件,其中包含许多特殊字符、空格和数据的排列和组合。 我将此文件的内容存储到一个数组列表中,如果我不使用useDelimiter() 函数,Java 正在完美地读取我的文本。

唯一的问题是它不接受 comma (,) 和 dot (.) 作为分隔符。

我知道我可以使用 input.useDelimiter(",|.| |\n") 来使用 commadotspace 作为分隔符和其他选项,但随后我得到的结果与 java 现在给我的结果不正确。

有没有办法指示 java 使用 commadot 作为分隔符以及它使用的任何默认分隔符?

提前感谢您的帮助:)

问候, 拉胡尔

【问题讨论】:

  • 如果您有带逗号和/或点的数字,最好只使用 BufferedReader 和 split("[\\.,\\s]")。或者立即一些第三方 CSVReader

标签: java java.util.scanner


【解决方案1】:

Scanner 的默认分隔符定义为模式\p{javaWhitespace}+,所以如果你还想将逗号和点视为分隔符,请尝试

input.useDelimiter("(\\p{javaWhitespace}|\\.|,)+");

请注意,您需要转义点,因为它是正则表达式中的特殊字符。

【讨论】:

  • 男人!我试图从大约 2 天开始实施这一点....没有比这更好的结果了。完美的。非常感谢:)
  • 它给了我想要的结果:)
【解决方案2】:

像这样使用转义字符:

input.useDelimiter("\\.");

【讨论】:

    【解决方案3】:

    你可以这样做:

    String str = "...";
    List<String> List = Arrays.asList(str.split(","));
    

    基本上 .split() 方法将根据(在这种情况下)您传递的分隔符拆分字符串,并将返回一个字符串数组。

    但是,您似乎在寻找字符串列表而不是数组,因此必须使用 Arrays.asList() 实用程序将数组转换为列表。仅供参考,您也可以这样做:

    String str = "...";
    ArrayList<String> List = Arrays.asList(str.split(","));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多