在Java中使用引号之间的值拆分字符串

时间:2014-10-23 14:12:36

标签: java string split

我正在使用Java读取文件,并希望将每行除以引号内的值。例如,一行将是......

" 100","这是"," a","测试"

我希望数组看起来像..

[0] = 100
[1] = this, is
[2] = a
[3] = test

我通常用逗号分隔,但由于某些字段包含逗号(上例中的位置1),因此不太合适。

感谢。

5 个答案:

答案 0 :(得分:2)

这是一个简单的方法:

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
}

答案 1 :(得分:2)

您可以按以下方式拆分:

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

<强>输出

100
this, is
a
test

注意   第一个数组元素将为空。

答案 2 :(得分:2)

您可以执行以下操作

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

最后数组变量将是所需的数组

<强>输出:

    100
    this, is
    a
    test

答案 3 :(得分:0)

快速又脏,但有效:

    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

答案 4 :(得分:0)

这是一种使用正则表达式的方法。

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 "

我不知道你有什么样的价值观,但你可以根据需要修改它。