Podczas przetwarzania tekstu, niezależnie od tego, czy szukasz określonych słów i ustalasz reguły dopasowania wzorców, liczenie częstotliwości elementów itp. – interpunkcja może zepsuć Twoje plany.
Często będziesz chciał usunąć przerywniki, znaki interpunkcyjne, cyfry lub w inny sposób kilka kategoria postaci, w zależności od tego, jaki jest twój cel końcowy.
W tym krótkim samouczku przyjrzymy się, jak usunąć interpunkcję z ciągu znaków w Javie.
Usuń interpunkcję z ciągu za pomocą RegEx (wyrażenia regularne)
Wyrażenia regularne są tutaj bardzo naturalne, zarówno dlatego, że prawdopodobnie będą częścią innych części przetwarzania, jak i dlatego, że są wydajnymi dopasowywaniem wzorców! W Javie wyrażeniem regularnym do dopasowywania interpunkcji jest p{Punct}
lub skrót p{P}
.
Będziesz musiał pominąć pierwszy ukośnik odwrotny w łańcuchu, więc usunięcie wszystkich znaków interpunkcyjnych jest równoznaczne z dopasowaniem ich i zastąpieniem pustym znakiem:
String.replaceAll("p{P}", "")
Zastosujmy to do prostego zdania:
String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
To skutkuje:
Hi This is in effect a synthetic sentence Its meant to have several punctuation characters
Rzućmy okiem na to, jakie znaki są tutaj traktowane jako interpunkcja:
String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
Z tymi znakami specjalnymi – które pozostały po usunięciu interpunkcji?
$+^`|~
Usuń interpunkcję z ciągu bez RegEx
Jeśli nie chcesz używać wyrażeń regularnych, możesz wykonać ręczne sprawdzenie podczas iteracji każdego znaku ciągu. Pamiętaj, aby użyć StringBuffer
zamiast a String
robiąc to, ponieważ ciągi są niezmienne i kopie muszą być tworzone za każdym razem, gdy chcesz dodać znak - więc tworzysz string.length
liczba ciągów w pamięci.
StringBuffer
jest zmienny i można go łatwo przekształcić w niezmienny ciąg na końcu procesu:
Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!
public static String removePunctuations(String s) {
StringBuffer buffer = new StringBuffer();
for (Character c : s.toCharArray()) {
if(Character.isLetterOrDigit(c))
buffer.append(c);
}
return buffer.toString();
}
Stwórzmy ciąg i wyczyśćmy go:
String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello!
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~
Where are they? :(
HelloHerearesomespecialcharactersWherearethey
Chociaż ten proces jest bardziej konfigurowalny, sprawdza tylko litery i cyfry. Alternatywnie możesz sprawdzić ręcznie kody znaków i zamiast tego wykluczyć tylko niektóre znaki interpunkcyjne – i pozostawić spacje, podziały wierszy itp.
Wnioski
W tym krótkim samouczku przyjrzeliśmy się, jak usunąć interpunkcję lub niektóre znaki specjalne z ciągu znaków w Javie za pomocą wyrażeń regularnych lub ręcznego sprawdzania w rozszerzonym for
pętla.