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
'IT TIP' 카테고리의 다른 글
자바에서 jmap을 사용하여 힙 덤프를 분석하는 방법 (0) | 2021.01.06 |
---|---|
배열, 고정 크기 배열 및 배열의 기본 주소를 함수 매개 변수로 전달하는 것의 차이점 (0) | 2021.01.06 |
리플 드로어 블에서 state_selected를 설정하는 방법 (0) | 2021.01.06 |
EF6 Code First의 enum에 해당하는 테이블을 만드는 방법은 무엇입니까? (0) | 2021.01.06 |
텍스트 상자에서 커서의 위치를 어떻게 찾습니까? (0) | 2021.01.06 |