我正在使用Java读取文件,并希望将每行除以引号内的值。例如,一行将是......
" 100","这是"," a","测试"
我希望数组看起来像..
[0] = 100
[1] = this, is
[2] = a
[3] = test
我通常用逗号分隔,但由于某些字段包含逗号(上例中的位置1),因此不太合适。
感谢。
答案 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 "
我不知道你有什么样的价值观,但你可以根据需要修改它。