2011-11-26 2 views
1

연결해야하는 기존 터미널 시스템의 출력이 있습니다. 다음은 출력 예제입니다.자바에서 문자열 연결

 
output1 = 
LINE ONE 
LINE TWO 
LINE THREE 
NO DATA 
LINE FOUR 
LINE FIVE 
LINE SIX   % 

output2 = 
LINE FOUR  % 
LINE FIVE 
LINE SIX 
LINE SEVEN 
NO DATA 
LINE EIGHT 
END 

결합해야 할 출력 문자열은 5 개까지있을 수 있습니다. 문제 ... 줄 사이에 중복이있을 수 있습니다 (일부 반복 (예 : NO DATA) 제거해서는 안 됨). 간단한 줄 비교를 수행 할 수 없습니다.

 
correct answer should be: 
LINE ONE 
LINE TWO 
LINE THREE 
NO DATA 
LINE FOUR 
LINE FIVE 
LINE SIX 
LINE SEVEN 
NO DATA 
LINE EIGHT 
END

자바 솔루션을 찾고 있습니다.

아이디어가 있으십니까? 감사.

+1

데이터를 스트림으로 수신합니까? 아니면 하나의 큰 추출/파일로 수신합니까? –

+2

정확히 무엇을 요구하고 있는지 확실하지 않습니다. 어떻게 그 끈이 있니? 왜 모든 문자열을 목록에 추가 할 수 없습니까? –

+0

위에서 설명한대로 별도의 스트림으로 제공됩니다. – rob345

답변

1

힌트 :

생성

이 검사가

if (!"NO DATA".equals(thisLine) { 
    if(!list.contains(thisLine)){ /* add to list */} 
}else{ 
    /* add to list */ 
} 
+0

이 문제는 ... 중복 된 행 (NO DATA)은 "NO DATA"뿐만 아니라 모든 문자열 일 수 있습니다. 중복 된 줄을 예측할 방법이 없습니다. – rob345

+0

당신이 그것에 대해 확인할 수있는 것이 있습니까? –

+0

유일하게 식별 할 수있는 것은 반복되는 여러 줄이 있다는 것입니다. 위에서 설명한대로 이전 터미널 시스템에 출력됩니다. 데이터가 화면에 비해 너무 큰 경우 스크롤 항목이 만들어지고 나머지 데이터가 표시됩니다.첫 번째 출력의 맨 아래에있는 여러 줄은 출력 길이에 따라 다음에 반복됩니다. – rob345

1

당신이 하나 개의 큰 파일로 데이터를 수신하는 경우, 당신은을 복용하여 시작해야 목록을 출력

의 각 라인을 읽고 다음과 같이 Scanner 객체를 확인하십시오.

File f = new File("thefile.txt"); 
Scanner s = new Scanner(new BufferedReader(new FileReader(f))).useDelimiter("END"); 
while (s.hasNext()) { 
    String block = s.next(); // string will now contain all text between instances of "END" 
    // process the text block by splitting on \n 
    String[] lines = block.split("\n"); 
    StringBuilder output = new StringBuilder(); 
    for (String line : lines) { 
     // process each line, checking for duplicates, appending to output. 
    } 
    // write your final output to a file, etc. 
} 
+0

을 사용하여 합법적 인 동일한 행을 지우지 않고 중복? 나는 그 답이 단지 각 줄뿐만 아니라 여러 줄에 걸쳐 패턴을 보는 것에 있다고 생각한다. – rob345

+0

@ rob345 이것은 좋은 방법입니다. 물론 필요에 따라 스캐너를 리디렉션해야합니다. 여러분이 이야기하는 여러 줄의 패턴은 Jason의''// 각 줄 처리하기 ... ''입니다. 필요한 모든 프로토콜 로직을 넣을 수 있습니다. – corsiKa

+0

나는 이것을 파헤쳐 볼 것이다. .. 고마워. – rob345