2014-02-16 3 views
-1

업데이트 : 알아 냈습니다. 아래를 참조하십시오.문자열을 검색 한 다음 텍스트 파일의 다음 줄을 인쇄하십시오.

텍스트 문서에서 특정 문자열을 찾으려고합니다. 문자열을 찾으면 빈 줄이 나올 때까지 줄에있는 정보 만 인쇄하고 싶습니다. 문자열을 찾고 인쇄 할 수 있었지만 항상 문자열이 포함 된 줄을 먼저 인쇄합니다.

예 :

blah blah 
ted 
blah blah 
blah 
bl 

mike 

가 지금은 인쇄 : blah blah blah bl

내가 어쩌면 nextline() 생각하지만 솔직히 아무 생각이 : ted blah blah blah bl
내가 원하는 나는이 문서에서 테드 검색

내 클래스에서 textIO 대신 스캐너를 사용하는 방법. 난 내 자신의 질문에 대답 할 수 없기 때문에

public static void main(String[] args) { 

    boolean output=false; 
    String name=""; 
    String junk="CHAMBERS"; 
    TextIO.putln("Search name:"); 
    name = TextIO.getln();  
    TextIO.readFile("doc.txt"); 
    name = name.toUpperCase(); 
    TextIO.putln(name + "'s "+"Info"); 

    output = false; 
    while (false == TextIO.eof()) { 
     String line = TextIO.getln(); 
     if (line.isEmpty()) 
      output = false; 
     if (line.indexOf(name) >= 0 && line.indexOf(junk)<=0){ 
      output = true; 
     }  
     if (output){ 
      line=line.trim(); 
      TextIO.putln(name+":"+'"'+line+'"');} 
    } 

    TextIO.putln(); 

} 

나는 여기를 놓을 게요 :

을하면 (출력) 트리에서 :

if (output){ 
line=line.trim(); 
if (line.startsWith(name)){} 
else{ 
TextIO.putln('"'+line+'"');}} 

이 문자열 '에 대한 행을 확인 이름 '은 그것을 무시합니다. 그런 다음 다음 줄로갑니다. 일부 줄에 이름 앞에 공백이 있으면 trim()을 사용해야했습니다. 이것이 '이름'을 찾을 때마다 새 라인을 끊임없이 만드는 것을 피하기 위해 초보자로서 내가 찾은 유일한 방법입니다. 이 문제에 대한보다 일반적인 해결책을 만들기 위해 필요한 일부 서식을 제거했습니다.

+3

코드를 표시하십시오. – BroSlow

답변

1

"ted"문자열을 찾기 위해 사용하는 함수는 ted 문자열의 첫 번째 문자 위치를 제공해야합니다. 해당 위치에 문자열의 길이를 ted로 추가 한 다음 나머지 줄을 기록하십시오 (해당 색인에서 줄 끝까지).

+0

이것은 나에게 완전히 명확하지는 않지만 내가 말하는 것에 대해 생각해 볼 수 있다고 생각합니다. 문제는, 그리고 나는 그것을 다시 찍을 내 게시물을 편집 할 수 있다고, 그 'ted'문서에 20 번 나타날 수 있습니다. 그래서 그 문자열을 완전히 포함하고있는 라인을 무시하고 싶습니다. 네가하는 말은 내가 피하려고하는 빈 줄이 많이 생길지도 모른다. 잠시 동안 .substring()을 사용하는 것으로 생각했지만 이름 행에만 영향을 줄 수는 없습니다. – user3251678

+0

각 행에 대해 문자열의 마지막 위치를 얻습니다. 그런 다음 문자열의 크기를 추가합니다. 줄의 길이를 추가 한 길이의 위치에서 해당 줄의 부분 문자열을 얻은 다음 줄을 인쇄하십시오. –

+0

If 당신은 다음과 같습니다 : aaaaa –

관련 문제