IT TIP

Java의 입력 텍스트에서 구두점을 제거하려면 어떻게해야합니까?

itqueen 2021. 1. 6. 20:37
반응형

Java의 입력 텍스트에서 구두점을 제거하려면 어떻게해야합니까?


Java에서 사용자의 입력을 사용하여 문장을 얻으려고하는데 소문자로 만들고 모든 구두점을 제거해야합니다. 내 코드는 다음과 같습니다.

    String[] words = instring.split("\\s+");
    for (int i = 0; i < words.length; i++) {
        words[i] = words[i].toLowerCase();
    }
    String[] wordsout = new String[50];
    Arrays.fill(wordsout,"");
    int e = 0;
    for (int i = 0; i < words.length; i++) {
        if (words[i] != "") {
            wordsout[e] = words[e];
            wordsout[e] = wordsout[e].replaceAll(" ", "");
            e++;
        }
    }
    return wordsout;

문자가 아닌 모든 문자를 제거하는 방법을 찾을 수없는 것 같습니다. 나는 운없이 정규식과 반복자를 사용해 보았습니다. 도움을 주셔서 감사합니다.


먼저 문자가 아닌 모든 문자를 제거하고 소문자로 접은 다음 입력을 분할하여 모든 작업을 한 줄로 수행합니다.

String[] words = instring.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");

처음에는 공백이 입력에 남아 있으므로 분할이 계속 작동합니다.

분할 하기 전에 쓰레기 문자를 제거 하면 요소를 반복 할 필요가 없습니다.


다음 정규식 구문을 사용할 수 있습니다.

구두점 :! "# $ % & '() * +,-. / :; <=>? @ [] ^ _`{|} ~ 중 하나

inputString.replaceAll("\\p{Punct}", "");

당신은 이것을 시도 할 수 있습니다 :-

Scanner scan = new Scanner(System.in);
System.out.println("Type a sentence and press enter.");
String input = scan.nextLine();
String strippedInput = input.replaceAll("\\W", "");
System.out.println("Your string: " + strippedInput);

[^\w] 단어가 아닌 문자와 일치하므로 위의 정규 표현식은 단어가 아닌 모든 문자를 일치시키고 제거합니다.


RegEx를 사용하고 싶지 않다면 (문제를 감안할 때 매우 불필요 해 보입니다) 아마도 다음과 같은 것을 시도해야합니다 :

public String modified(final String input){
    final StringBuilder builder = new StringBuilder();
    for(final char c : input.toCharArray())
        if(Character.isLetterOrDigit(c))
            builder.append(Character.isLowerCase(c) ? c : Character.toLowerCase(c));
    return builder.toString();
}

에서 기본 char[]반복 하고 문자 또는 숫자 인 경우 String에만 추가 char(사용자가 수행하려는 모든 기호를 필터링) 한 다음 char.


정규식을 사용하고 싶지 않으므로 여기에 또 다른 간단한 해결책이 있습니다.

public String removePunctuations(String s) {
    String res = "";
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            res += c;
    }
    return res;
}

참고 : 여기에는 문자와 숫자가 모두 포함됩니다.

참조 URL : https://stackoverflow.com/questions/18830813/how-can-i-remove-punctuation-from-input-text-in-java

반응형