a karakterlánc-manipuláció leggyakrabban programozás közben történik. Mint a szóközök eltávolítása a karakterlánc szövegében vagy környékén. Ez más néven ‘strip’ ping le szóközök a húr. Tehát eddig mindannyian tisztában vagyunk azzal, hogy a Java-ban a szóközök eltávolításának különböző módjai vannak, nevezetesen a trim, a replaceAll. A java 11 azonban néhány új kiegészítést tett ezekhez olyan módszerekkel, mint a strip , stripLeading, stripTrailing.
az esetek többségében csak a trim módszert használjuk a szóközök eltávolítására. Soha nem állunk meg és gondolkodunk azon, hogy van-e jobb módja annak, hogy megfeleljünk igényeinknek? Persze, a trim () az esetek többségében jól működik, de a java-ban sokféle módszer létezik. Mindegyiknek megvannak a maga előnyei és hátrányai. Hogyan döntsük el, hogy melyik módszer felel meg nekünk a legjobban?
Nos, ebben a blogban részletesen ismertetjük a különböző módszereket.
- trim (): a vezető és a hátsó szóközök eltávolítása a karakterláncból
- strip(): Eltávolítja a szóközöket a karakterlánc elején és végén. Strip módszer Unicode karakterkészlet tudatában
- trim vs strip: különbségek trim és strip módszer
- stripLeading(): eltávolítja a fehér terek csak az elején a string
- stripTrailing(): eltávolítja a fehér terek csak a vége a string
- replace(): lecseréli az összes cél karakterek új karakter
- replaceAll(): az összes illesztett karaktert új karakterre cseréli. Ez a módszer a reguláris kifejezést használja bemenetként a kicserélendő célszubstring azonosításához
- replaceAll vs replace: különbségek a replace és a replaceAll metódus között
- replaceFirst(): csak a célszubstring első előfordulását cseréli le új replace stringre
a szóközök eltávolításának különböző módjai a java-ban
a legfontosabb megjegyezni, hogy a java-ban egy string objektum megváltoztathatatlan. Ez azt jelenti, hogy nem módosíthatjuk a karakterláncot, ezért az összes metódus új karakterláncot ad vissza az összes transzformációval.
trim() módszer a java-ban
trim() a java fejlesztők által leggyakrabban használt módszer a vezető és záró szóközök eltávolítására. A trim módszer esetében a szóköz karakter minden olyan karaktert jelent, amelynek ASCII értéke kisebb vagy egyenlő 32-vel (‘U+0020’).
példa a trim módszerre a szóközök eltávolítására:
public class StringTrimTest { public static void main(String args) { String string = " String with space "; System.out.println("Before trim: \"" + string +"\""); System.out.println("After trim: \"" + string.trim() +"\""); }}
ban ben CommandLineRunnerImpl
status=futás
Before trim: " String with space "After trim: "String with space"
strip() módszer Java 11
a Java kiadásában 11 új strip() módszer került hozzáadásra a vezető és a záró szóközök eltávolításához a karakterláncból.
ezt a módszert adtuk hozzá, mivel az Unicode szabványok szerint különféle szóköz karakterek vannak, amelyek ASCII értéke meghaladja a 32-et(‘U+0020’). Pl. 8193 (U + 2001).
ezen szóköz karakterek azonosításához új iswhitespace(int) módszert adtak hozzá a Java 1.5-ből a Karakterosztályban. Ez a módszer unicode-ot használ a szóköz karakterek azonosítására. Az unicode szóköz karakterekről itt olvashat bővebben.
a strip metódus ezt a karaktert használja.isWhitespace (int) módszer a fehér szóköz karakterek széles körének lefedésére és eltávolítására.
példa a szalagra():
public class StringStripTest { public static void main(String args) { String string = " String with space "; System.out.println("Before strip: \"" + string+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
a CommandLineRunnerImpl
status = futás
Before strip: " String with space "After strip: "String with space"
különbség a trim és a strip módszer között java-ban
trim () | szalag() |
---|---|
Java-ból 1 | Java-ból 11 |
Codepoint(ASCII) értéket használ | Unicode értéket használ |
vezető és követő karakter eltávolítása (szóköz) | vezető és követő karakter eltávolítása (szóköz) |
eltávolítja azokat a karaktereket, amelyek ASCII értéke kisebb vagy egyenlő ‘U + 0020 ‘vagy’ 32 ‘ | eltávolítja az összes szóköz karaktert az unicode szerint |
nézzük meg azt a példát, ahol 32 (‘U+0020’) unicode-nál nagyobb fehér szóköz karaktert fogunk használni.
public class StringTrimVsStripTest { public static void main(String args) { String string = '\u2001'+"String with space"+ '\u2001'; System.out.println("Before: \"" + string+"\""); System.out.println("After trim: \"" + string.trim()+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
kimenet:
Before: " String with space "After trim: " String with space "After strip: "String with space"
a fenti példában láthatjuk, hogy a trim módszer nem tudja eltávolítani a ‘\u2001’ unicode karakter által hozzáadott szóköz karaktert.
Megjegyzés: Ha windows gépen fut, előfordulhat, hogy a korlátozott unicode-készlet miatt nem látja a hasonló kimenetet. Használhatja az online fordítóprogramokat a program futtatásához. Néhány online fordító linkek az alábbiak,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () módszer Java 11
hozzáadott Java 11, stripLeading () módszer eltávolítja az összes vezető terek egy String.
hasonló a szalag módszer stripLeading is használ karaktert.isWhitespace (int) az identifyng fehér terek.
public class StringStripLeadingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripLeading()+"\""); }}
kimenet:
Before: " String with space "After : "String with space "
stripTrailing () módszer Java 11
hozzáadott Java 11, stripTrailing () módszer eltávolítja az összes végződő szóköz egy String.
hasonló a szalag módszer stripTrailing is használ karaktert.isWhitespace (int) a fehér terek azonosítására.
public class StringStripTrailingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripTrailing()+"\""); }}
kimenet:
Before:" String with space "After :" String with space"
replace(CharSequence target, CharSequence replacement):
hozzáadva a java 1.5-ből, ezt a módszert használják az egyes célszubsztringek helyettesítésére a megadott helyettesítő karakterlánccal.
ez a módszer helyettesíti az összes megfelelő célelemet.
megjegyzés: még egy módszer csere(char oldChar, char newChar) jelen van a java string osztályban. Az egyetlen különbség az, hogy ez a módszer egyetlen karaktert vesz célba és helyettesít. Nem használhatjuk ezt a módszert a hely eltávolítására, mert nem lehet üres karakter helyett.
példa az összes szóköz eltávolítására a karakterláncból
public class StringReplaceTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string + "\""); System.out.println("Replace: \"" + string.replace(" ", "") + "\""); }}
kimenet:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String csere)
hozzáadott java 1.4, ez az egyik legerősebb módszer a string manipuláció. Ezt a módszert számos célra használhatjuk.
a replaceAll () metódus segítségével minden egyező reguláris kifejezés alstringjét kicserélhetjük az adott helyettesítő karakterláncra. Például az összes szóköz eltávolításához, a vezető szóközök eltávolításához, a hátsó szóközök eltávolításához stb.
csak létre kell hoznunk a helyes reguláris kifejezést a helyes csere paraméterrel. Néhány reguláris kifejezés példák az alábbiak szerint:
\s + | Találd meg az összes helyet |
^\s + | keresse meg az összes szóközt a sor elején |
\s + $ | keresse meg az összes szóközt a sor végén |
példa a szóközök helyettesítésére a karakterláncban,
megjegyzés: a java-ban a ‘/’ hozzáadásához escape karaktert kell használnunk, így a “\s+” – hoz ” \ \ s+”
public class StringReplaceAllTest { public static void main(String args) { String string = " String with space "; System.out.println("Before replaceAll : \"" + string+"\""); System.out.println("Replace all space : \"" + string.replaceAll(" ", "") + "\""); System.out.println("Replace all regex : \"" + string.replaceAll("\s+", "") + "\""); System.out.println("Replace Leading : \"" + string.replaceAll("^\s+", "") + "\""); System.out.println("Replace trailing : \"" + string.replaceAll("\s+$", "") + "\""); }}
kimenet:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
amint láthatjuk, hogy a replaceAll() elég hatékony módszer, ha megfelelő reguláris kifejezéssel használjuk.
különbség a replaceAll és a replace módszer között
replaceAll() | replace() |
---|---|
Java 1.4 – től | Java 1-től.5 |
reguláris kifejezés elfogadása a célazonosításhoz | karakterlánc elfogadása a célazonosításhoz |
használt fix vagy dinamikus karakterlánc csere | használt fix karakterlánc csere |
az ‘U+0020′ vagy ’32’ | az unicode szerinti Összes szóköz karaktert eltávolítja |
replaceFirst (String regex, String csere)
hozzáadott java 1.4, replaceFirst módszer helyettesíti csak az első mérkőzés adott reguláris kifejezés csere húr.
ez a módszer nagyon hasznos lehet, ha csak egy első előfordulást kell kicserélnie. Például, ha csak el kell távolítanunk a vezető szóközöket, használhatjuk a “\\s+” vagy a “^\\s+”szót.
ezzel a módszerrel eltávolíthatjuk a záró szóközöket a “\\s+$” reguláris kifejezés használatával. Mivel ez a kifejezés csak a sor utolsó szóközéhez illeszkedik. Tehát az utolsó szóközöket tekintik ennek a módszernek az első mérkőzésének.
Vegyünk egy példát a vezető és a záró szóközök eltávolítására a karakterláncból
public class StringReplaceFistTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string+"\""); System.out.println("Replace : \"" + string.replaceFirst("space", "update") + "\""); System.out.println("Leading : \"" + string.replaceFirst("\s+", "") + "\""); System.out.println("Trailing : \"" + string.replaceFirst("\s+$", "") + "\""); }}
kimenet
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
gyorsított olvasás :
- különböző módon lehet eltávolítani a szóközöket a karakterláncból a java-ban
- a trim() a leggyakoribb módszer a szóközök eltávolítására a karakterláncban
- a trim módszer nem ismeri az unicode-ot, és ascii értéket használ a szóköz karakterek azonosítására
- a java-ból 11 új módszer a ‘strip()’ kerül hozzáadásra a szóközök eltávolításához
- a metódus Unicode aware és ezt kell használni eltávolítására szóközök kifejezetten többnyelvű esetben
- java 11 módszerek, mint stripleading() és striptrailing() aded eltávolítására vezető és záró szóközök.
- a szóközök kontrolláltabb eltávolításához használhatjuk a replaceAll(), replace(), replaceFirst függvényt()