1

现在我有一个关于 Java IO 的任务,我需要逐行读取文件并将这些数据保存到数据库中,但是现在我遇到了一个问题。

"desk","12","15","(small,median,large)"

我想用string.split(",")分割,并将数据保存到每一列。但是我发现()中的数据也被拆分了,我不想拆分(小,中,大),我想保持这个完整性。我怎样才能做到这一点?我知道我可以使用正则表达式,但我真的不知道该怎么做?

4

3 回答 3

0

或者,如果 Java 必须是:),您可以按 "\\s*\"\\s*,\\s*\"" 拆分,然后在第一个字段的开头和末尾添加 "第二个。我放了 \s 因为我看到你也有空格分隔符 - 15",blank"(small

于 2013-04-03T18:56:54.930 回答
0

您可以使用Patternand来解决这个问题Matcher。任何使用 split 的解决方案似乎都是一个讨厌的解决方法。这是一个例子:

public static void main(String[] args){
    String s = "\"desk\",\"12\",\"15\",\"(small,median,large)\"";
    Pattern p = Pattern.compile("\".+?\"");
    Matcher m = p.matcher(s);
    List<String> matches = new ArrayList<String>();

    while (m.find()){
        matches.add(m.group());
    }

    System.out.println(matches);
}
于 2013-04-03T18:58:22.093 回答
0
(\(.+?\)|\w+)

上面的代码与下面的结果相匹配,这将允许一个比其他一些发布的更灵活的解决方案。正则表达式的语法在此页面的另一个答案中,只需使用此正则表达式即可

办公桌
12
15
(小、中、大)
于 2013-04-15T00:36:48.890 回答