如果是数字,请不要拆分

时间:2015-06-26 04:31:05

标签: java regex apache-poi

我有一个字符串myString = ""Ted", "Male", "29", "10,000""。我试图用myString.split(",")拆分此字符串,并使用poi将其写入excel。但它也将薪水"10,000"分成["10","000"]

有什么办法可以避免吗?

4 个答案:

答案 0 :(得分:2)

如果您的字符串在“,”之后用空格格式化,则可以使用此代码。

String string = "\"Ted\", \"Male\", \"29\", \"10,000\"";

System.out.println(Arrays.asList(string.split(", ")));

答案 1 :(得分:0)

String.split()函数实际上有两个参数,第一个是用于分割String的正则表达式,第二个是用于停止分割的限制。 [Documentation]

如果您确定该数字总是出现在最后,您可以提供3作为第二个参数的输入,以便java停止在第三个逗号分割,不再分裂。

示例 -

String myString = "\"Ted\", \"Male\", \"29\", \"10,000\"";
System.out.println(Arrays.toString(myString.split(",",3)));
>>> ["Ted",  "Male",  "29", "10,000"]

答案 2 :(得分:0)

您可以使用正向lookbehind正则表达式仅分隔引号后出现的逗号,后跟零或多个空格:

String myString = "\"Ted\", \"Male\", \"29\", \"10,000\"";
System.out.println(Arrays.asList(myString.split("(?<=\"), *")));

输出:

["Ted", "Male", "29", "10,000"]

答案 3 :(得分:0)

你可以试试这个正则表达式:

(?:\\")(,\\s*)

它将查找旁边的字符并支持零个或多个空格。

Demo