【问题标题】:Regular expression construct for arbitrary string or number of characters in java [duplicate]java中任意字符串或字符数的正则表达式构造[重复]
【发布时间】:2022-01-16 15:08:19
【问题描述】:

我正在尝试从 .csv 文件中拆分数据,但是,某些字段/列之间也包含逗号,就像这样

ABCKS,"ASK,ED","SDR,ED",2022-07-11,8011.0
cvbgb,"hfhvnf,rgr","dthd,chdf",2022-07-11,111.9
ABCKS,"ASK,ED","SDR,ED",2022-07-11,8011.0

因此,.split(",") 字符串方法会在数据中创建额外的字段。

我试过了

if (aLine.contains("\"|,|\"")){

    String newString = aLine.replaceAll("\"|,|\"","|_|").replaceAll("\"", "");
    aList = Arrays.asList(newString.split(",", -1));

}

它似乎不起作用。

【问题讨论】:

  • 您应该在这里使用适当的 CSV 解析器,它可以自动为您处理。使用正则表达式是可能的,但容易出错和不可预见的边缘情况。

标签: java string


【解决方案1】:

正如 Tim 上面所说,一个合适的 CSV 阅读器可能会更好,但一个简单的解决方案可能是这样的:,(?![A-Za-z]+")。您选择每个不跟字母和引号的逗号。这可以满足您的示例数据,但如果存在极端情况,它很容易被破坏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2014-08-17
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多