Szövegfeldolgozás során, akár bizonyos szavakat keresel és mintaillesztési szabályokat készítesz, az elemek gyakoriságát számolod stb. – az írásjelek csavarkulcsot dobhatnak a tervein.
Gyakran előfordul, hogy el szeretné távolítani a stopszavakat, írásjeleket, számjegyeket vagy másokat néhány karakterek kategóriája, attól függően, hogy mi a végső célod.
Ebben a rövid oktatóanyagban megnézzük, hogyan lehet eltávolítani az írásjeleket egy karakterláncból Java nyelven.
Írásjelek eltávolítása a karakterláncból reguláris kifejezéssel (reguláris kifejezések)
A reguláris kifejezések nagyon természetesek itt, mert valószínűleg más feldolgozási részek részét képezik, és mert hatékony mintaegyeztetők! A Java nyelvben az írásjelek illesztésének reguláris kifejezése a p{Punct}
vagy egy gyorsírás p{P}
.
A karakterlánc első fordított törtjelét meg kell szöknie, így az írásjelek eltávolítása megegyezik a megfeleltetéssel és egy üres karakterrel való helyettesítéssel:
String.replaceAll("p{P}", "")
Alkalmazzuk egy egyszerű mondatra:
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);
Ennek eredményeként:
Hi This is in effect a synthetic sentence Its meant to have several punctuation characters
Nézzük meg, milyen karaktereket kezelünk írásjelként:
String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);
Ezekkel a speciális karakterekkel – melyek maradnak meg az írásjelek eltávolítása után?
$+^`|~
Távolítsa el az írásjeleket a reguláris kifejezés nélküli karakterláncból
Ha nem szeretne reguláris kifejezéseket alkalmazni, akkor manuálisan ellenőrizheti a karakterlánc minden karakterét. Ne felejtse el használni a StringBuffer
helyett a String
miközben ezt teszi, mivel a karakterláncok megváltoztathatatlanok, és minden alkalommal másolatot kell készíteni, amikor karaktert akarunk hozzáadni – tehát string.length
a memóriában lévő karakterláncok száma.
StringBuffer
változtatható, és a folyamat végén könnyen változtathatatlan karakterláncokká alakítható:
Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!
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();
}
Hozzon létre egy karakterláncot, és tisztítsa meg:
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
Bár ez a folyamat jobban testreszabható, csak a betűket és a számjegyeket ellenőrzi. Alternatív megoldásként manuálisan is ellenőrizheti a karakterkódokat, és csak néhány írásjelet hagyhat ki helyette – és hagyja el a szóközöket, sortöréseket stb.
Következtetés
Ebben a rövid oktatóanyagban megvizsgáltuk, hogyan távolíthat el írásjeleket vagy bizonyos speciális karaktereket egy karakterláncból Java nyelven, reguláris kifejezések vagy kézi ellenőrzés segítségével. for
hurok.