2014-03-24 2 views
0

를 존중하지 않는다 I 문자열 배열로 탭 구분 된 문자열을 추출하고 다음 코드를 가지고자바 : 있고 StringTokenizer 세퍼레이터

static public List<String> getContents(File aFile, String separator){ 
    // all strings, split based on separator 
    List<String> contentList = new ArrayList<String>(); 
    StringTokenizer tokenizer = new StringTokenizer(Util.getContents(aFile), separator); 
    while (tokenizer.hasMoreTokens()){ 
     contentList.add(tokenizer.nextToken()); 
    } 
    return contentList; 
} 

이 경우에는 세퍼레이터 따라서 "\의 t"이다.

두 개의 문자열이 하나의 탭으로 구분되는 한 모든 것이 좋습니다. 그러나 내 데이터 세트에는 두 개의 탭으로 구분 된 두 개의 문자열이있는 경우가 있습니다. 즉, 하나의 매개 변수가 누락되어 있고 emptry 문자열이 목록에 추가됩니다. 그러나이 메서드는이를 무시하고 문자열 하나가 적은 배열을 반환합니다.

내 경우에는 항상 5 개의 문자열 배열을 원합니다. 즉, 텍스트가없는 탭이 4 개만있는 텍스트는 5 개의 빈 문자열 배열을 반환합니다 (이 구문을 기반으로하는 구문 분석 작업에 필요함). 불행히도 콘텐츠에 대한 제어권이 없으며 제어 할 수없는 수백만 개의 파일로 작업하고 있습니다.

StringTokenizer에서 더 좋은 방법이 있습니까? 아니면 직접 구현해야합니까? 여기

일부 예 :

문자열 확인이 \의 테라 바이트 = \ TC \ TD \ TE 문자열 NOK = A \ 결핵은 \ TC \ t \ TE

랄프

답변

0

이 발견 : How to split a string in Java

난에

"myString".split("\t", -1); 

와 함께 할 수있는 한 곳에서 여러 개의 분리 기호가있는 경우 빈 문자열을 가져옵니다.

어쨌든 고마워!

관련 문제