我是一个学习RegEx的完全初学者。我需要根据多个条件将字符串拆分为不同的子字符串。
弦乐:
"abc","def",NULL,"ghi",NULL,"jkl"分拆成
[abc, def, NULL, ghi, NULL, jkl]目前,我正在使用"..."生成包含在String[] split = line.split("\",\"");中并由、分隔的所有子字符串。这很好,但是如果有一个空值(这个值不是用“.”括起来的),那么子字符串是不正确的。
如果给出以下条件之一,是否可以使用RegEx将字符串拆分成子字符串?
提前感谢!
发布于 2020-03-12 18:43:56
String input = "\"abc\",\"def\",NULL,NULL,\"ghi\",NULL,\"jkl\"";
String [] split = input.split("(\",\")|(\",)|(,\")|(L,)");
for (int i = 0; i < split.length; i++) {
if (split[i].startsWith("\"")) {
split[i] = split[i].substring(1);
}
if (split[i].endsWith("\"")) {
split[i] = split[i].substring(0, split[i].length() -1);
}
if (split[i].equals("NUL")) {
split[i] = "NULL";
}
}输出
[abc, def, NULL, NULL, ghi, NULL, jkl]发布于 2020-03-12 19:09:28
我们可以首先用空字符串替换所有双引号,然后用分隔符逗号分隔得到的字符串。如下所示
String[] strArray = str.replaceAll("\"" , "").split(",");
String str = "\"abc\",\"def\",NULL,\"ghi\",NULL,\"jkl\"";
String[] strArray = str.replaceAll("\"" , "").split(",");
Arrays.asList(strArray).stream().forEach(System.out::println);发布于 2020-03-12 18:44:15
我觉得你不需要雷杰普。您的问题可以通过split()和replace()方法解决。
public static void main(String[] args) {
String str = "\"abc\",\"def\",NULL,\"ghi\",NULL,\"jkl\"";
List<String> list = Arrays.stream(str.split(","))
.map(part -> part.replace("\"", ""))
.collect(Collectors.toList());
System.out.println(list);
}输出:
abc,def,NULL,ghi,NULL,jkl
https://stackoverflow.com/questions/60660072
复制相似问题