java - 在双引号内分割字符串

标签 java split

我有这个字符串:

"Dairy products","LAI","249","SMP","Skimmed milk powder, Intervention Quality - Lait écrémé en poudre","€/100 kg","EU","201906","204.05"

我用逗号分隔它

    data = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");

    if (data.length == meta.size()) {
        products.add(new Prodotti(
            data[0],
            data[1],
            Integer.parseInt(data[2]),
            data[3],
            data[4],
            data[5],
            data[6],
            Integer.parseInt(data[7]),
            Double.parseDouble(data[8])
        ));
    } else {
        System.out.println(meta.get(data.length));
    }

这是data[4]包含的内容:

""Skimmed milk powder, Intervention Quality - Lait écrémé en poudre""

我不知道这个结果是错误还是正确,而且当我在 JSON 上打印它时,它看起来像这样:

"\"Skimmed milk powder, Intervention Quality - Lait écrémé en poudre\""

最佳答案

如果我要这样做,我会将 "," 替换为 "#" 并在 # 上进行拆分。它可能不优雅,但可以避免一些麻烦。您可以选择不在引用字段内的其他内容,而不是 #

      String str =
            "\"Dairy products\",\"LAI\",\"249\",\"SMP\",\"Skimmed milk powder, 
             Intervention Quality - Lait écrémé en poudre\",\"€/100 
             kg\",\"EU\",\"201906\",\"204.05\"";

      String[] substr = str.replaceAll("\",\"", "\"#\"").split("#");

      for (String s : substr) {
         System.out.println(s);
      }
   }

上面的打印结果与通常引用的字符串的预期相同。由于字符重音,JSON 可能做了一些特殊的事情。

关于java - 在双引号内分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57059786/

相关文章:

c# - 你能在一个衬里中获得最大长度的 String.Split 吗?

python - 使用 PyPDF2 仅选择 PDF 的第一页

Java (Regex) - 获取句子中的所有单词

java - 如果子字符串/单词位于有界缓冲区的边界,如何找到它

linux - 在 Linux 中,如何将输入流压缩为多个输出文件?

r - 从单个列创建多个列并清理结果

java - LibGdx - 切换屏幕时严重内存泄漏

java - 无法将 JSF ViewScoped bean 作为 ManagedProperty 注入(inject) validator

java - 如何在Java上正确编写RabbitMQ Publisher?

java - 带有 GBoard 输入的 EditText 首字母大写