나는 짹짹을 가져 와서 데이터베이스에 저장하는 응용 프로그램을 만들고 있습니다. 나는 트윗의 전체 텍스트를위한 열과 트윗의 단어 만 남을 다른 열을 가질 것이다. (나는 나중에 어떤 단어가 가장 많이 사용되었는지 계산할 단어가 필요하다.)그냥 문자열로 문자열을 만드는 더 효율적인 방법
현재 내가하는 일은 6 가지 .replaceAll()
기능 중 일부가 두 번 트리거 될 수있는 기능을 사용하는 것입니다. 예를 들어 replaceAll()
을 사용하여 모든 "해시 태그"를 제거하기위한 for 루프가 있습니다.
문제는 내가 몇 분마다 가져 오는 수천 개의 트윗을 편집 할 것이므로 내가하는 일은 너무 효율적이지 않을 것이라고 생각합니다.
내 요구 사항은이 순서 (도 아래로 울부 짖는 소리 코멘트를 작성)에서 무엇 :
- 모든 사용자 이름이 모든 해시 태그는 을 언급 모두 삭제 RT (리트 윗 플래그)
- 삭제
- 언급 삭제
- 모든 줄 바꿈을 공백으로 바꾸십시오.
- 모든 공백을 단일 공백으로 바꾸십시오.
- 공백을 제외한 모든 특수 문자를 삭제 여기
짧은과에 Compilable 예입니다 :이
public class StringTest {
public static void main(String args[]) {
String text = "RT @AshStewart09: Vote for Lady Gaga for \"Best Fans\""
+ " at iHeart Awards\n"
+ "\n"
+ "RT!!\n"
+ "\n"
+ "My vote for #FanArmy goes to #LittleMonsters #iHeartAwards"
+ " htt…";
String[] hashtags = {"#FanArmy", "#LittleMonsters", "#iHeartAwards"};
System.out.println("Before: " + text + "\n");
// Delete all usernames mentioned (may run multiple times)
text = text.replaceAll("@AshStewart09", "");
System.out.println("First Phase: " + text + "\n");
// Delete all RT (retweets flags)
text = text.replaceAll("RT", "");
System.out.println("Second Phase: " + text + "\n");
// Delete all hashtags mentioned
for (String hashtag : hashtags) {
text = text.replaceAll(hashtag, "");
}
System.out.println("Third Phase: " + text + "\n");
// Replace all break lines with spaces
text = text.replaceAll("\n", " ");
System.out.println("Fourth Phase: " + text + "\n");
// Replace all double spaces with single spaces
text = text.replaceAll(" +", " ");
System.out.println("Fifth Phase: " + text + "\n");
// Delete all special characters except spaces
text = text.replaceAll("[^a-zA-Z0-9 ]+", "").trim();
System.out.println("Finaly: " + text);
}
}
교체 코드를 수행하기 전에 문자열을 공백으로 단어로 분할하는 것이 더 효율적입니까? 그런 다음 각 단어에 대해 일치 필터를 개별적으로 실행하십시오. – deanosaur
일부 패턴을 하나의 코드로 결합 할 수 있습니다 (예 :'#FanArmy | #LittleMonsters | #iHeartAwards ") –
@Salauyou 해시 태그를 기본 응용 프로그램에서 어떻게 처리 할 것인지 더 자세히 설명하기 위해 코드를 편집했습니다. –