我有一个这样的字符串:
"0008934","1801 W NORMATOWN ROAD","ROMEOVILLE","IL","US","60446","8158866981","Y"
我想提取双引号内的所有值。你能帮我完成任务吗?
这是我所期待的:
0008934
1801 W NORMATOWN ROAD
ROMEOVILLE
IL
US
60446
8158866981
Y
任何人都可以请帮助我吗?
你可以这样做:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexTest {
public static void main(String[] args) {
String strInput = "\"0008934\",\"1801 W NORMATOWN ROAD\",\"ROMEOVILLE\",\"IL\",\"US\",\"60446\",\"8158866981\",\"Y\"";
Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher(strInput);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
输出:
0008934
1801 W NORMATOWN ROAD
ROMEOVILLE
IL
US
60446
8158866981
Y
您可能还想考虑OpenCSV,这是一个轻量级且简单的开源库,仅包含几个 Java 类。由于您的输入是 CSV,因此 OpenCSV 可以为您执行此操作。
使用剥离前导和尾随引号,然后拆分","
String[] parts = input.replaceAll("(^\")|(\"$)", "").split("\",\"");
一旦您遇到问题并尝试使用正则表达式解决它,您就会遇到两个问题。
考虑一下:
String[] list = input.split(",");
foreach (String str : list){
str.replaceAll("\"","");
}