Java中按值在引号之间拆分字符串
我正在读一个Java文件,想用引号内的值分割每一行。例如,一行是 “100”,“这是”,“a”,“测试” 我希望阵列看起来像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
[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