2014-01-30 3 views
2

String에있는 여러 단어를 제거하는 방법은 무엇입니까? 여기서 어려운 점은 어떤 단어인지 모르겠습니다. 아래 예제를 참조하십시오. 단어의 다중 출입구 제거

내가 문장 문장으로 단락을 분할하지만 시도하는 방법, 내 단락 includes 날짜 날짜 잰 (13), 2014 년 같은 기간 날짜에 문제가 어떻게 미국과 같은 단어 includes와 숫자

여기에서는 일부 단어가 여러 번 나타납니다. sentence, dates, includeshow과 같은 단어가 두 번 이상 나타납니다. 이 반복은 includes과 같이 서로 가깝게 발생하지 않을 수 있습니다. 나는 이것을 제거하여 아래와 같이 될 것입니다.

내 단락 멀티 발생을 제거하는 것을 2014년 1월 13일, 미국과 같은 단어와 숫자

주와 같은 날짜를 포함하는 문제가, 나는 문장으로 단락을 분할 시도하는 방법이다 그러나 멀티 발생 단어가 모두 제거 된 것을 의미하지는 않습니다. 그것은 단순히 하나의 복사본을 유지하고 나머지는 제거합니다.

위와 마찬가지로 매우 큰 단어 String이 발생합니다. 어떤 단어가 두 번 이상 발생했는지 전혀 알 수 없습니다. 어떻게해야합니까?

답변

3

한 번에 한 단어 씩 단어를 복사하고 길을 따라 복제본을 무시하십시오. 해시 세트를 사용하여 복제본을 추적하십시오. 당신은 제대로 문장 부호를 처리 할 그것을 조금 손질해야합니다,하지만 당신이 시작할 수 있어야

String text = "This is how how I tried to split a paragraph into a sentence sentence But, there is a problem My paragraph includes dates dates dates dates like Jan 13, 2014 , words includes like U S and numbers"; 
StringBuilder result = new StringBuilder(); 
HashSet<String> set = new HashSet<String>(); 
for(String s : text.split(" ")) { 
    if (!set.contains(s)) { 
     result.append(s); 
     result.append(" "); 
     set.add(s); 
    } 
} 
System.out.println(result); 

이 같은

뭔가 ... ,.

+0

네, 그렇습니다. 감사. –

+1

@halfer Typo. 코드 스 니펫이 정상적으로 보이지만 –

1

이를 사용할 수 있습니다

String rtsruoy = new StringBuilder(yourstr).reverse().toString(); 

String tluser = rtsruoy.replaceAll("(?s)(\\b[a-zA-Z]{3,}+\\b)(?=.*?\\1)", ""); 

String result = new StringBuilder(tluser).reverse().toString(); 

참고 : 난 당신이 당신이 원하는 것을 선택할 수 있습니다 편지의 3으로 최소 수를 넣어 선택이 끝난했다.

+0

내가 이것을 테스트했을 때 (자바에서) 연속 된 중복이 아닌 흩어진 것만 제거하는 것처럼 보였습니다. 텍스트를 찾아라. –

+0

답장을 보내 주셔서 감사합니다. 그러나 그것은 당신이 먼저 바꿀 단어를 알아야한다고 생각합니다. (1) –

+0

@TedBigham : 연속되지 않은 단어를 처리하도록 코드를 수정했습니다. (질문을 잘 읽지 못했습니다.) –

1

당신이 사용할 수있는 LinkedHashSet :

String original = "This is how how I tried to split a paragraph into a sentence sentence But, there is a problem My paragraph includes dates dates dates dates like Jan 13, 2014 , words includes like U S and numbers"; 
System.out.println(new LinkedHashSet<String>(Arrays.asList(original.split(" "))).toString().replace(", ", " ")); 

이 반환 :

를 [이, 나는 문장으로 단락을 분할 시도하는 방법이다 그러나이 내가 1월 13일 같은 날짜를 포함 문제 , 2014, 단어 미국 및 숫자]

관련 문제