Strengmanipulering gjøres oftest under programmering. Som å fjerne mellomrom i eller rundt strengteksten. Dette også kjent som ‘strip’ping av mellomrom i strengen. Så frem til nå er vi alle klar over de forskjellige måtene å fjerne mellomrom fra streng i java, nemlig trim, replaceAll. Java 11 har imidlertid gjort noen nye tillegg til disse med metoder som, stripe , stripLeading, stripTrailing.
Fleste ganger, vi bare bruke trim metoden for å fjerne mellomrom. Vi stopper aldri og tror er det kan være en bedre måte å dekke våre behov? Visst, trim () fungerer bra for de fleste tilfeller, men det er mange forskjellige metoder i java. Hver har sine egne fordeler og ulemper. Hvordan bestemmer vi hvilken metode som passer oss best?
vel, i denne bloggen skal vi dekke de ulike metodene i detalj.
- trim (): Fjerne ledende og etterfølgende mellomrom fra strengen
- strip (): Fjerner mellomrom på begynnelsen og slutten av strengen. Strip metoden Er Unicode charset klar
- trim vs strip: Forskjeller mellom trim og strip metoden
- stripLeading(): Fjerner mellomrom bare fra begynnelsen av strengen
- stripTrailing(): Fjerner mellomrom bare fra slutten av strengen
- erstatt(): Erstatter alle mål tegn med nytt tegn
- replaceAll(): erstatter Alle Matchede Tegn med nytt tegn. Denne metoden tar regulære uttrykk som input for å identifisere målet delstreng som må erstattes
- replaceAll vs replace: Forskjeller mellom erstatte og replaceAll metode
- replaceFirst(): Erstatter bare første forekomsten av målet delstreng med ny erstatning streng
Ulike måter å fjerne mellomrom fra streng i java
Viktigste punktet å merke seg er at i java en streng objekt er uforanderlig. Det betyr at vi ikke kan endre en streng, derfor returnerer alle metodene ny streng med alle transformasjonene.
trim() metode i java
trim () er den mest brukte metoden av java-utviklere for å fjerne ledende og etterfølgende mellomrom. For trimmetode betyr mellomrom et tegn hvis ASCII-verdi er mindre enn eller lik 32 (‘U + 0020’).
eksempel på trimmetode for å fjerne mellomrom:
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() +"\""); }}
i Commandlinerunneripl
status=kjører
Before trim: " String with space "After trim: "String with space"
strip() metode Java 11
i utgivelsen Av Java 11 ble ny stripe() metode lagt til for å fjerne ledende og etterfølgende mellomrom Fra Streng.
denne metoden ble lagt til da det er forskjellige mellomrom i Henhold Til Unicode-standarder som har ASCII-verdi mer enn 32 (‘U+0020’). Eks: 8193 (U+2001).
for å identifisere disse mellomromstegnene ble ny metode isWhitespace(int) lagt til Fra Java 1.5 I Tegnklasse. Denne metoden bruker unicode til å identifisere mellomrom. Du kan lese mer om unicode space tegn her.
strip-metoden bruker Dette Tegnet.isWhitespace (int) metode for å dekke bredt spekter av hvite mellomrom og fjerne dem.
Eksempel på stripe():
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()+"\""); }}
I Commandlinerunneripl
status = kjører
Before strip: " String with space "After strip: "String with space"
Forskjell mellom trim-og stripemetode i java
trim () | stripe() |
---|---|
Fra Java 1 | Fra Java 11 |
Bruker codepoint (ASCII) verdi | Bruker Unicode-verdi |
Fjerner ledende og etterfølgende tegn (mellomrom) | Fjerner ledende og etterfølgende tegn (mellomrom) |
Fjerner tegn som har ASCII-verdi mindre enn Eller lik ‘U + 0020 ‘eller’ 32 ‘ | Fjerner alle mellomrom i henhold til unicode |
La oss se på eksemplet der vi skal bruke hvitt mellomrom som er høyere enn 32 (‘U+0020’) unicode.
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()+"\""); }}
Utgang:
Before: " String with space "After trim: " String with space "After strip: "String with space"
i eksemplet ovenfor kan vi se at trim-metoden ikke kan fjerne mellomrom lagt til av’ \u2001 ‘ unicode-tegn.
Merk: hvis du kjører på windows-maskin, kan det hende du ikke kan se lignende utdata på grunn av begrenset unicode-sett. Du kan bruke online kompilatorer til å kjøre programmet. Noen online kompilator lenker er som nedenfor,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () metode Java 11
Lagt Til I Java 11, stripLeading() metode fjerner alle ledende mellomrom fra En Streng.
i Likhet med strip metoden stripLeading bruker Også Tegn.isWhitespace (int) for identifyng hvite mellomrom.
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()+"\""); }}
Utgang:
Before: " String with space "After : "String with space "
stripTrailing () Metode Java 11
Lagt I Java 11, stripTrailing() metoden fjerner alle slutt mellomrom fra En Streng.
i Likhet med strip metode stripTrailing bruker Også Tegn.isWhitespace (int) for å identifisere hvite mellomrom.
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()+"\""); }}
Utgang:
Before:" String with space "After :" String with space"
erstatt(CharSequence target, CharSequence replacement):
Lagt til fra java 1.5, denne metoden brukes til å erstatte hvert målstreng med den angitte erstatningsstrengen.
denne metoden erstatter alle samsvarende målelementer.
Merk: En mer metode erstatte(char oldChar, char newChar) er til stede i java streng klasse. De eneste forskjellene er at denne metoden tar enkelt tegn som mål og erstatning. Vi kan ikke bruke denne metoden til å fjerne plass, fordi vi ikke kan ha tomt tegn som erstatning.
Eksempel for å fjerne alle mellomrom fra streng
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(" ", "") + "\""); }}
Utdata:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacing)
Lagt til i java 1.4, dette Er en av de kraftigste metoden for strengmanipulering. Vi kan bruke denne metoden til mange formål.
ved hjelp av replaceAll () – metoden kan vi erstatte hver matchende regulære uttrykksstreng med den oppgitte erstatningsstrengen. For eksempel for å fjerne alle mellomrom, fjerne ledende mellomrom, fjerne etterfølgende mellomrom og så videre.
Vi trenger bare å lage riktig regulært uttrykk med riktig erstatningsparameter. Noen vanlige uttrykk eksempler som nedenfor:
\s + | finn all plass |
^\s + | Finn alle lokaler på linjebegynnelsen |
\s+ $ | Finn Alle spaces på linjeavslutning |
eksempel for å erstatte mellomrom i streng,
Merk: i java for å legge til ‘/’ må vi bruke escape-tegn, så for «\s+» må vi bruke «\\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+$", "") + "\""); }}
Utgang:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
Som vi kan se at replaceAll () er ganske kraftig metode hvis vi bruker den med riktig regulært uttrykk.
Forskjell mellom replaceAll og replace metode
replaceAll () | erstatt() |
---|---|
Fra Java 1.4 | Fra Java 1.5 |
Godtar regulært uttrykk for målidentifikasjon | Godtar streng for målidentifikasjon |
brukes for fix eller dynamisk string replacement | Brukes for fix string replacement |
Fjerner tegn som har ASCII-verdi mindre enn Eller lik ‘U + 0020 ‘eller’ 32 ‘ | Fjerner alle mellomrom i henhold til unicode |
replaceFirst (String regex, String replacement)
Lagt til i java 1.4, replaceFirst-metoden erstatter bare den første kampen for gitt regulært uttrykk med erstatningsstreng.
Denne metoden kan være svært nyttig hvis du bare trenger å erstatte bare en første forekomst. For eksempel hvis vi bare trenger å fjerne ledende mellomrom, kan vi bruke «\\s+ «eller» ^\\s+».
vi kan også bruke denne metoden til å fjerne etterfølgende mellomrom ved å bruke «\\s+$» regulært uttrykk. Da dette uttrykket bare samsvarer med de siste mellomrom i linjen. Så siste mellomrom regnes som den første kampen for denne metoden.
la oss ta et eksempel for å fjerne ledende og etterfølgende mellomrom fra streng
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+$", "") + "\""); }}
Utgang
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Fast track-lesing :
- det er forskjellige måter å fjerne mellomrom fra streng i java
- trim() er den vanligste metoden som brukes for å fjerne mellomrom i streng
- trim-metoden er ikke unicode klar og bruker ascii-verdi for å identifisere mellomrom
- fra java 11 ny metode ‘strip()’ er lagt til for å fjerne mellomrom
- Metode stripe spesielt i flerspråklig tilfelle
- fra java 11 metoder som stripleading() og striptrailing() er aded for å fjerne ledende og etterfølgende mellomrom.
- for mer kontrollert fjerning av mellomrom kan vi bruke replaceAll (), replace (), replaceFirst()