java中的正则表达式删除csv中的第一个值

java中的正则表达式删除csv中的第一个值,java,regex,Java,Regex,我有一个csv文件,如下所示: 12,2014-10-09 06:00:00,2014-10-09 06:15:00,"","","","123,456","","9,999","","" 我能够使用以下方法替换数字和所有双引号之间的逗号: String test = rowData.replaceAll("([0-9]),([0-9])","$1$2").replaceAll("\"",""); 我不确定这是否是做这件事的最佳方法(意见是值得赞赏的)。我的问题是我还需要删除逗号之前的第一个

我有一个csv文件,如下所示:

12,2014-10-09 06:00:00,2014-10-09 06:15:00,"","","","123,456","","9,999","",""
我能够使用以下方法替换数字和所有双引号之间的逗号:

String test = rowData.replaceAll("([0-9]),([0-9])","$1$2").replaceAll("\"","");
我不确定这是否是做这件事的最佳方法(意见是值得赞赏的)。我的问题是我还需要删除逗号之前的第一个值,所以基本上我的输出应该是这样的

Orig: 12,2014-10-09 06:00:00,2014-10-09 06:15:00,"","","","123,456","","9,999","",""
Need: 2014-10-09 06:00:00,2014-10-09 06:15:00,,,,123456,,9999,,
我不确定是否需要另一个正则表达式来执行此操作,因为我不知道如何准确地或使用类似lastindex或firstindex的东西来删除逗号的第一个值???多谢各位

编辑:我刚刚注意到我不能使用([0-9]),([0-9]),因为它还删除了日期时间的逗号:(.正确的问题是如何替换csv以删除: 1.第一值 2.报价 3.数字和引号之间的逗号尝试以下操作:

String test = rowData.replaceAll("^[^,]+|,(?!(([^\"]*\"){2})*[^\"]*$|\"(?=,)|(?<=,)\"", "");
String test=rowData.replaceAll(“^[^,]+|,(?!(([^\“]*\”){2})*[^\“]*$|\”(?=,)|(?试试这个

 test = test.substring(test.indexOf(",") + 1, test.length());

这比其他人回答的更好的原因:开销更少,不需要正则表达式!

为了匹配您的预期输出,您可以执行以下操作

String str = "12,2014-10-09 06:00:00,2014-10-09 "
    + "06:15:00,\"\",\"\",\"\",\"123,456\",\"\",\"9,999\",\"\",\"\"";
str = str.substring(str.indexOf(',') + 1);
str = str.replaceAll("\"(\\d+),(\\d+)\"", "$1$2").replace("\"", "");
String expected = "2014-10-09 06:00:00,2014-10-09 06:15:00,,,,123456,,9999,,";
System.out.println(str.equals(expected));
输出为

true

谢谢。我还有一个带2个逗号的数字,“99999999”,所以我只添加了一行额外的str=str.replaceAll(“\”(\\d+),(\\d+),(\\d+),“$1$2$3”);。:)