String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(正则表达式);
System.out.println(arrs.length);// 3
10 个解决方案
#1
没能理解你说的。
String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(",");
System.out.println(arrs.length);// 3
这样就可以了吧
String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(",");
System.out.println(arrs.length);// 3
这样就可以了吧
#2
首先呢,你得分成两部分,一部分是引号里的,一部分是引号外的,将引号里的单独处理。
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
String line = "abc,123,\"love123,520\"";
Pattern pa=Pattern.compile("\"(.*?)\"");
Matcher ma=pa.matcher(line);
String rep = null; //被替换的内容
//替换引号里的内容
while(ma.find())
{
line=line.replace(ma.group(),"**");
rep = ma.group();
}
String[] arrs = line.split(",");
//去掉逗号后的内容
for(String a:arrs){
System.out.print(a);
}
System.out.println();
System.out.println(arrs.length); //3
System.out.println(rep);
#3
双引号内的不分隔,最后的结果是arr[0] = abc
arr[1]=123
arr[2]="love123,520"
arr[1]=123
arr[2]="love123,520"
#4
这是一种思路,多谢啊,我这个demo太短了,如果这个字符串中有很多个双引号,比如:String line = "abc,123,\"love123,520\",\"234,345\",\"123,098\"";
你这种方式会就复杂许多,不知道一个正则能否搞定?
#5
#6
大概是这样的,如果你只是想去掉逗号,按照原字符输出,还得加一下逻辑
#7
先按逗号分隔 然后循环去查引号 拼接起来
#8
(?<!("[^,]{1,1000})),(?![^,]{1,1000}")
(?<!("[^,]+)),(?![^,]+")//没测试过,非jdk8可以试试这条。
#9
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
public static void main(String[] args){
String content = "abc,123,\"love123,520\"";
String regex = "(((\"[^\"]*\")|[^\",])*)(,|$)";
Matcher matcher = Pattern.compile(regex).matcher(content);
while(matcher.find()){
System.out.println(matcher.group(1));
}
}
}
#10
---------- java ----------
abc
123
"love123,520"
Output completed (0 sec consumed) - Normal Termination
abc
123
"love123,520"
Output completed (0 sec consumed) - Normal Termination
#1
没能理解你说的。
String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(",");
System.out.println(arrs.length);// 3
这样就可以了吧
String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(",");
System.out.println(arrs.length);// 3
这样就可以了吧
#2
首先呢,你得分成两部分,一部分是引号里的,一部分是引号外的,将引号里的单独处理。
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
String line = "abc,123,\"love123,520\"";
Pattern pa=Pattern.compile("\"(.*?)\"");
Matcher ma=pa.matcher(line);
String rep = null; //被替换的内容
//替换引号里的内容
while(ma.find())
{
line=line.replace(ma.group(),"**");
rep = ma.group();
}
String[] arrs = line.split(",");
//去掉逗号后的内容
for(String a:arrs){
System.out.print(a);
}
System.out.println();
System.out.println(arrs.length); //3
System.out.println(rep);
#3
没能理解你说的。
String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(",");
System.out.println(arrs.length);// 3
这样就可以了吧
arr[1]=123
arr[2]="love123,520"
#4
首先呢,你得分成两部分,一部分是引号里的,一部分是引号外的,将引号里的单独处理。
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
String line = "abc,123,\"love123,520\"";
Pattern pa=Pattern.compile("\"(.*?)\"");
Matcher ma=pa.matcher(line);
String rep = null; //被替换的内容
//替换引号里的内容
while(ma.find())
{
line=line.replace(ma.group(),"**");
rep = ma.group();
}
String[] arrs = line.split(",");
//去掉逗号后的内容
for(String a:arrs){
System.out.print(a);
}
System.out.println();
System.out.println(arrs.length); //3
System.out.println(rep);
这是一种思路,多谢啊,我这个demo太短了,如果这个字符串中有很多个双引号,比如:String line = "abc,123,\"love123,520\",\"234,345\",\"123,098\"";
你这种方式会就复杂许多,不知道一个正则能否搞定?
#5
#6
首先呢,你得分成两部分,一部分是引号里的,一部分是引号外的,将引号里的单独处理。
不知道你的不分隔处理是什么意思,是单独提出来不做处理吗?
String line = "abc,123,\"love123,520\"";
Pattern pa=Pattern.compile("\"(.*?)\"");
Matcher ma=pa.matcher(line);
String rep = null; //被替换的内容
//替换引号里的内容
while(ma.find())
{
line=line.replace(ma.group(),"**");
rep = ma.group();
}
String[] arrs = line.split(",");
//去掉逗号后的内容
for(String a:arrs){
System.out.print(a);
}
System.out.println();
System.out.println(arrs.length); //3
System.out.println(rep);
这是一种思路,多谢啊,我这个demo太短了,如果这个字符串中有很多个双引号,比如:String line = "abc,123,\"love123,520\",\"234,345\",\"123,098\"";
你这种方式会就复杂许多,不知道一个正则能否搞定?
大概是这样的,如果你只是想去掉逗号,按照原字符输出,还得加一下逻辑
#7
先按逗号分隔 然后循环去查引号 拼接起来
#8
(?<!("[^,]{1,1000})),(?![^,]{1,1000}")
(?<!("[^,]+)),(?![^,]+")//没测试过,非jdk8可以试试这条。
#9
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test{
public static void main(String[] args){
String content = "abc,123,\"love123,520\"";
String regex = "(((\"[^\"]*\")|[^\",])*)(,|$)";
Matcher matcher = Pattern.compile(regex).matcher(content);
while(matcher.find()){
System.out.println(matcher.group(1));
}
}
}
#10
---------- java ----------
abc
123
"love123,520"
Output completed (0 sec consumed) - Normal Termination
abc
123
"love123,520"
Output completed (0 sec consumed) - Normal Termination