Java中按值在引号之间拆分字符串

Java中按值在引号之间拆分字符串,java,string,split,Java,String,Split,我正在读一个Java文件,想用引号内的值分割每一行。例如,一行是 “100”,“这是”,“a”,“测试” 我希望阵列看起来像 [0] = 100 [1] = this, is [2] = a [3] = test 我通常用逗号分隔,但由于某些字段包含逗号(上面示例中的位置1),因此它并不真正合适 谢谢。这里有一个简单的方法: String example = "\"test1, test2\",\"test3\""; int quote1, quote2 = -1; while((quote2

我正在读一个Java文件,想用引号内的值分割每一行。例如,一行是

“100”,“这是”,“a”,“测试”

我希望阵列看起来像

[0] = 100
[1] = this, is
[2] = a
[3] = test
我通常用逗号分隔,但由于某些字段包含逗号(上面示例中的位置1),因此它并不真正合适

谢谢。

这里有一个简单的方法:

String example = "\"test1, test2\",\"test3\"";
int quote1, quote2 = -1;
while((quote2 != example.length() - 1) && quote1 = example.indexOf("\"", quote2 + 1) != -1) {
  quote2 = example.indexOf("\"", quote1 + 1);
  String sub = example.substring(quote1 + 1, quote2); // will be the text in your quotes
}

您可以按以下方式拆分它:

String input = "\"100\",\"this, is\",\"a\",\"test\"";
for (String s:input.split("\"(,\")*")) {
    System.out.println(s);
}
输出

100
this, is
a
test
注意
第一个数组元素将为空。

快速且脏,但可以工作:

    String s = "\"100\",\"this, is\",\"a\",\"test\"";
    StringBuilder sb  = new StringBuilder(s);
    sb.deleteCharAt(0);
    sb.deleteCharAt(sb.length()-1);
    String [] buffer= sb.toString().split("\",\"");
    for(String r : buffer)
        System.out.println(r); code here

这里有一种使用正则表达式的方法

public static void main (String[] args) {
    String s = "\"100\",\"this, is\",\"a\",\"test\"";
    String arr[] = s.split(Pattern.quote("\"\\w\"")));
    System.out.println(Arrays.toString(arr));
}
输出:

["100","this, is","a","test"]
它的作用是:

 \" -> start by a "
  \\w -> has a word character
  \" -> finish by a "

我不知道您有什么类型的值,但您可以根据需要修改它。

您可以执行以下操作

    String yourString = "\"100\",\"this, is\",\"a\",\"test\"";
    String[] array = yourString.split(",\"");
    for(int i = 0;i<array.length;i++)
        array[i] = array[i].replaceAll("\"", "");

String.split(String regex)方法使用一个正则表达式作为参数,因此只需使用一个与
“something”
匹配的正则表达式就可以了。我不太清楚,但很快就会有人给你答案。删除第一个和最后一个
字符,然后在
上拆分它,“
是的,我对他的例子中的逗号有点困惑,我没有看到它有一个比“a”和一个示例字符串更能说明问题的名称,因此代码段是可运行的,因此您可以提供示例输出,这将是完美的;-)您可以在stringI上使用substring方法,而不是将字符串转换为StringBuilder,尽管如此,但您决定使用显式方法(如
deleteCharAt
    100
    this, is
    a
    test