탭 문자 작동하지 않습니다 :StringUtils.countMatches는()와 같은 나는 내용으로 CSV 파일의 유효성을 검사하고
TEST;F;12345;0X4321 - 1234 DUMMYTEXT;0X4321 - 1234 TESTTEXT
지금까지 값이로 구분 된 ';' 텍스트 공백 포함 할 수있는 동안은, 탭을 열 구분자로 중지 처리해야 할 지금,
private static final String COLUMN_SEPARATOR = ";";
public void validateFile(BufferedReader reader) {
String line = reader.readLine();
while (line != null && result == ValidationResult.VALID) {
//this is broken with tab-stop as COLUMN_SEPARATOR
int matches = StringUtils.countMatches(line, COLUMN_SEPARATOR);
if (matches != getCSVColumnCount() - 1
&& StringUtils.isNotBlank(line)) {
if (matches == 0) {
//MISSING_CSV_COLUMN_SEPERATOR;
} else {
//UNEXPECTED_CSV_COLUMN_COUNT;
}
}
line = reader.readLine();
}
}
변경된 요구 사항으로 :와 방법은 마법처럼 일했다
TEST F 12345 0x4321 - 1234 DUMMYTEXT 0x4321 - 1234 TESTTEXT
내가 변경된 다음 줄 :
private static final String COLUMN_SEPARATOR = "\\t";
문제 :StringUtils.countMatches(line, "\\t")
어떤 현상도 찾을 수 없습니다 (0을 반환합니다). 나는 싶지 않아 :
int matches = line.split("\\t").length;
나는 그것이 상당한 성능 저하 (csv로 - 파일이 작은되지 않습니다) 될 것이라고 supersticious 나처럼
. 더 좋은 방법을 알고 있습니까?
왜 두 개의 백 슬래시를 사용합니까? Tab은'\ t'입니다. –
아참. 고맙습니다. 이제 작동합니다. –