所以我正在解析一个文件,我正在将我的行字符串写成由,
分隔的CSV。我的问题是同一行字符串中有货币,也可以用,
示例:
84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename
^
有时美元金额小于1000,因此,
不会发生,但有时会更高。
我在考虑使用正则表达式,如果$
前面有多个,
,它会找到\d
并替换$
答案 0 :(得分:1)
对一个或多个数字使用正向前瞻,前面有一个非数字,一个或多个数字和逗号。 这对你有用:
public static void main(String[] args){
String s = "84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename";
System.out.println(s.replaceAll("(\\D\\d+),(?=\\d+)", "$1"));
}
O / P:
84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55000.00,somename
答案 1 :(得分:0)
这样做的方法取决于您的需求。
我会将值分组:
private static final String STRING_TO_PARSE = "84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename";
public static void main(String[] args) {
Matcher matcher = Pattern.compile("(.+),(.+),(.+),(.+),(\\$[\\d,]+\\.\\d\\d),(.+)").matcher(STRING_TO_PARSE);
matcher.find();
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}