【发布时间】:2016-08-09 08:25:39
【问题描述】:
String delimiterStr = "|", line="1231|08062016|4441|10|PayeeName1|REF1";
String ISSUE_UPLOAD_FILE_PATTERN = "(?<=(^|" + delimiterStr + "))(([^\"" + delimiterStr + "]*)|\"([^\"]*)\")(?=($|" + delimiterStr + "))";
List<String> splitString = new ArrayList<String>();
Matcher matcher = Pattern.compile(ISSUE_UPLOAD_FILE_PATTERN).matcher(line);
while (matcher.find()) {
if (matcher.group(3) != null) {//NOPMD,old code
System.out.println(matcher.group(3));
splitString.add(matcher.group(3));
}
}
System.out.println(splitString.size()+"::--->"+splitString);
OutPut :- 12::--->[1231, , 08062016, , 4441, , 10, , PayeeName1, , REF1, ]
如您在输出中看到的,上述模式在每个拆分字符串后占用空间。我不想在每个字符串之后占用空间。如果输入字符串中存在空间,则需要占用空间,否则不应占用空间。我的模式需要做哪些改变?
【问题讨论】:
-
不,不是。使用 for-each 循环打印输出。你不会看到空格。
标签: java pattern-matching matcher