Java'da Bir Dizeden Noktalama İşaretlerini Kaldırma

Metin işleme sırasında, ister belirli sözcükleri arayın ve kalıp eşleştirme kuralları oluşturun, ister öğelerin sıklığını sayın, vb. – noktalama işaretleri planlarınızı bozabilir.

Çoğu zaman, engellenecek sözcükleri, noktalama işaretlerini, rakamları veya başka şeyleri kaldırmak isteyeceksiniz biraz Nihai hedefinizin ne olduğuna bağlı olarak karakter kategorisi.

Bu kısa öğreticide, Java'da bir dizeden noktalama işaretlerinin nasıl kaldırılacağına bir göz atacağız.

RegEx (Normal İfadeler) ile Dizeden Noktalama İşaretlerini Kaldır

Normal İfadeler, hem muhtemelen diğer işleme parçalarının parçası olacakları hem de etkili model eşleyicileri oldukları için buraya çok doğal bir şekilde uyuyorlar! Java'da noktalama işaretleri için normal ifade şu şekildedir: p{Punct} veya bir steno p{P}.

Bir dizedeki ilk ters eğik çizgiden kaçmanız gerekecek, bu nedenle tüm noktalama işaretlerini kaldırmak, onları eşleştirmek ve boş bir karakterle değiştirmekle eşdeğerdir:

String.replaceAll("p{P}", "")

Bunu basit bir cümleye uygulayalım:

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);

Bunun sonucu:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

Burada hangi karakterlerin noktalama işareti olarak ele alındığına bir göz atalım:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Noktalama işaretlerini kaldırdıktan sonra kalan bu özel karakterlerle?

$+^`|~

RegEx olmadan Dizeden Noktalama İşaretlerini Kaldır

Düzenli ifadeler kullanmak istemiyorsanız, bir dizgenin her karakterini yinelerken el ile kontrol yapabilirsiniz. kullanmayı unutmayın StringBuffer yerine String bunu yaparken, dizeler değişmez olduğundan ve her karakter eklemek istediğinizde kopyaların yapılması gerektiğinden, string.length bellekteki dizi sayısı.

StringBuffer değiştirilebilir ve işlemin sonunda kolayca değişmez bir dizgeye dönüştürülebilir:

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

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();
}

Bir dizi oluşturalım ve temizleyelim:

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

Bu işlem daha özelleştirilebilir olsa da, yalnızca harfleri ve rakamları kontrol eder. Alternatif olarak, karakter kodlarını manuel olarak kontrol edebilir ve bunun yerine yalnızca bazı noktalama karakterlerini hariç tutabilir ve boşluklar, satır sonları vb. bırakabilirsiniz.

Sonuç

Bu kısa eğitimde, Java'da normal ifadeler kullanarak veya gelişmiş bir manuel kontrol kullanarak noktalama işaretlerini veya belirli özel karakterleri bir dizeden nasıl kaldırabileceğinize baktık. for döngü.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı