Odstranite ločila iz niza v Javi

Med obdelavo besedila, ne glede na to, ali iščete določene besede in ustvarjate pravila za ujemanje vzorcev, štejete pogostost elementov itd., lahko ločila pokvarijo vaše načrte.

Pogosto boste želeli odstraniti zaustavitvene besede, ločila, številke ali kaj drugega nekaj kategorijo znakov, odvisno od tega, kaj je vaš končni cilj.

V tej kratki vadnici si bomo ogledali, kako odstraniti ločila iz niza v Javi.

Odstranite ločila iz niza z RegEx (regularni izrazi)

Regularni izrazi so tukaj zelo naravni, tako zato, ker bodo verjetno del drugih delov obdelave, kot tudi zato, ker učinkovito ujemajo vzorce! V Javi je regularni izraz za ujemanje ločil p{Punct} ali stenografija p{P}.

Izogibati se boste morali prvi poševnici nazaj v nizu, zato je odstranitev vseh ločil enakovredna njihovemu ujemanju in zamenjavi s praznim znakom:

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

Uporabimo to na preprost stavek:

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

Rezultat tega je:

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

Oglejmo si, kateri znaki se tukaj obravnavajo kot ločila:

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

S temi posebnimi znaki – ki ostanejo po odstranitvi ločil?

$+^`|~

Odstranite ločila iz niza brez regularnega izraza

Če ne želite uporabljati regularnih izrazov, lahko izvedete ročno preverjanje med ponavljanjem skozi vsak znak niza. Ne pozabite uporabiti a StringBuffer namesto a String pri tem, ker so nizi nespremenljivi in ​​je treba narediti kopije vsakič, ko želite dodati znak – torej bi ustvarjali string.length število nizov v pomnilniku.

StringBuffer je spremenljiv in ga je mogoče enostavno pretvoriti v nespremenljiv niz na koncu postopka:

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

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

Ustvarimo niz in ga očistimo:

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

Čeprav je ta postopek bolj prilagodljiv, preverja samo črke in številke. Lahko pa tudi ročno preverite kode znakov in namesto tega izključite samo nekatera ločila – in pustite presledke, prelome vrstic itd.

zaključek

V tej kratki vadnici smo si ogledali, kako lahko odstranite ločila ali določene posebne znake iz niza v Javi z uporabo regularnih izrazov ali ročnega preverjanja v izboljšanem for zanke.

Časovni žig:

Več od Stackabuse