如何解析具有文本限定符的字符串

She*_*har 3 java string

我怎么解析一个String str = "abc, \"def,ghi\"";

这样我得到了输出

String[] strs = {"abc", "\"def,ghi\""}
Run Code Online (Sandbox Code Playgroud)

即一个长度为2的数组.

我应该使用正则表达式还是java api或任何其他开源中的任何方法

让我这样做的项目?

编辑

为了给出问题的背景,我正在阅读一个文本文件,其中每行有一个记录列表.每条记录都有以分隔符(逗号或分号)分隔的字段列表.现在我有一个要求,我必须支持文本限定符一些excel或开放办公室支持.假设我有记录

abc,"def,ghi"

在这里,是我的分隔符和"是我的文本限定符,这样当我解析这个字符串时我应该得到两个字段abc和def,ghi不是{abc,def,ghi}

希望这能清除我的要求.

谢谢

谢卡尔

And*_*s_D 5

基本算法并不太复杂:

 public static List<String> customSplit(String input) {
   List<String> elements = new ArrayList<String>();       
   StringBuilder elementBuilder = new StringBuilder();

   boolean isQuoted = false;
   for (char c : input.toCharArray()) {
     if (c == '\"') {
        isQuoted = !isQuoted;
        // continue;        // changed according to the OP comment - \" shall not be skipped
     }
     if (c == ',' && !isQuoted) {
        elements.add(elementBuilder.toString().trim());
        elementBuilder = new StringBuilder();
        continue;
     }
     elementBuilder.append(c); 
   }
   elements.add(elementBuilder.toString().trim()); 
   return elements;
}
Run Code Online (Sandbox Code Playgroud)