2014-09-16 6 views
1

단락에서 전체 문장을 제거하는 코드를 작성하려고합니다. 어떤 문장이든 상관 없지만 적어도 하나는 있어야합니다.단락에서 문장 제거

String edit = "The cow goes moo. The cow goes boo. The cow goes roo. The cow goes jew."; 
    int sentencestart = (edit.substring(edit.length()/2).indexOf('.') + edit.length()/2); 
    int sentenceend = edit.substring(sentencestart).indexOf('.') + sentencestart; 
    edit = edit.substring(0, sentencestart) + edit.substring(sentenceend); 
    System.out.println(edit); 

이것은 현재 가지고있는 코드입니다. 현재 내가 시작한 문자열과 똑같은 문자열을 인쇄하고 있습니다. 어떤 아이디어라도 있으십니까?

편집 : 나는 어떤 문장을 삭제해야한다는 것을 암시하는 것은 잘못되었습니다. 나는 첫 번째 문장을 제외하고 어떤 문장을 의미했다. 바람직하게는 제거 될 문장이 문자열의 중간에 위치 할 것이고, 실제 응용 프로그램은 매우 큰 문자열에 사용될 것이다.

단지 .에 의해 분할과 같은 필요한 행을하지 왜
+1

어떻게 당신이'.' – csmckelvey

+0

디버그를 도달 할 때까지 그냥 일이 일어나고 볼 수있는 값에보기에 의해 모든 문자를 삭제하는 방법에 대한, sentancestart와 sentanceend를 인쇄하여 그들이 다른지 확인하십시오. 동일한 가치를 평가하는 것처럼 보입니다. – Dave

답변

1

string edit = "The cow goes moo. The cow goes boo. The cow goes roo. The cow goes jew."; 
return edit.Substring(edit.Split('.')[0].Length + 1,edit.Length - edit.Split('.')[0].Length - 1); 

출력 : The cow goes boo. The cow goes roo. The cow goes jew.

면책 조항 : 코드는 C# 구문에 희망 동일하지 Java 그러나 캔은 최소한으로 Java에서 수행 위 가감.

1

그냥 필요한 기회 문장 끝 int sentenceend = edit.substring (sentencestart + 1) .indexOf ('.') + sentencestart;

가 나는 것을 시도했다 생각하지만 분명히하지

1

분할 바이 입력 '.' 캐릭터. 그런 다음 조각을 반복하여 모두 다시 추가하지만 두 번째 문장은 건너 뜁니다. 이 같은

뭔가 :에

public static void main(String args[]) { 
    String paragraph = "Hello. This is a paragraph. Foo bar. Bar foo."; 
    String result = ""; 
    int i = 0; 
    for (String s : paragraph.split("\\.")) { 
     if (i++ == 1) continue; 
     result += s+"."; 
    } 
    System.out.println(result); 
    } 

결과 :

Hello. Foo bar. Bar foo. 
+0

나는 그것을 시도했지만 어쨌든 그것은 최종 제품의 포맷팅을 파괴했다. 나는 올바르게하지 말아야한다. hehe – user2651000

+0

split (".") 문제가 생겼을 수있다. 마침표는 정규식 문자이고 split은 정규식을 허용합니다. 그래서 \\를 사용하여 마침표를 이스케이프합니다. – nostromo