Strängmanipulation görs oftast under programmering. Som att ta bort mellanslag i eller runt strängtexten. Detta kallas också ’strip’ Ping av mellanslag i strängen. Så hittills är vi alla medvetna om de olika sätten att ta bort mellanslag från sträng i java, nämligen trim, replaceAll. Java 11 har dock gjort några nya tillägg till dessa med metoder som, strip, stripLeading , stripterailing.
majoriteten av tiderna använder vi bara trimmetoden för att ta bort mellanslag. Vi slutar aldrig och tror att det kan finnas ett bättre sätt att passa vårt behov? Visst, trim () fungerar bra för de flesta fall, men det finns många olika metoder i java. Var och en har sina egna fördelar och nackdelar. Hur bestämmer vi vilken metod som passar oss bäst?
Tja, i den här bloggen ska vi täcka de olika metoderna i detalj.
- trim (): ta bort inledande och avslutande mellanslag från strängen
- strip (): Tar bort mellanslag i början och slutet av strängen. Strip method är Unicode charset aware
- trim vs strip: skillnader mellan trim och strip method
- stripLeading(): tar bort vita mellanslag endast från början av strängen
- stripterailing(): tar bort vita mellanslag endast från slutet av strängen
- ersätt(): ersätter alla måltecken med nytt tecken
- replaceAll(): ersätter alla matchade tecken med nya tecken. Denna metod tar Reguljärt uttryck som indata för att identifiera målsträng som behöver bytas ut
- replaceAll vs replace: skillnader mellan Ersätt och replaceAll metod
- replaceFirst(): ersätter endast första förekomsten av målsträng med ny ersättningssträng
olika sätt att ta bort mellanslag från sträng i java
viktigaste punkten att notera är att i java är ett strängobjekt oföränderligt. Det betyder att vi inte kan ändra en sträng, varför alla metoder returnerar ny sträng med alla transformationer.
trim () – metoden i java
trim () är den vanligaste metoden av java-utvecklare för att ta bort inledande och efterföljande mellanslag. För trimmetod betyder mellanslag varje tecken vars ASCII-värde är mindre än eller lika med 32 (’U+0020’).
exempel på trimmetod för att ta bort mellanslag:
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 CommandLineRunnerImpl
status = running
Before trim: " String with space "After trim: "String with space"
strip() metod Java 11
i utgåvan av Java 11 ny remsa() metod lades till för att ta bort inledande och avslutande mellanslag från sträng.
denna metod lades till eftersom det finns olika mellanslag enligt Unicode-standarder med ASCII-värde mer än 32(’U+0020’). Ex: 8193 (U + 2001).
för att identifiera dessa mellanslag har ny metod isWhitespace (int) lagts till från Java 1.5 I teckenklass. Denna metod använder unicode för att identifiera mellanslag. Du kan läsa mer om unicode space-tecken här.
strip-metoden använder detta tecken.isWhitespace (int) metod för att täcka brett spektrum av blanktecken och ta bort dem.
exempel på remsa ():
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 CommandLineRunnerImpl
status = kör
Before strip: " String with space "After strip: "String with space"
skillnad mellan trim och strip metod i java
trim () | remsa() |
---|---|
från Java 1 | från Java 11 |
använder codepoint (ASCII) värde | använder Unicode-värde |
tar bort inledande och avslutande tecken (mellanslag) | tar bort inledande och avslutande tecken (mellanslag) |
tar bort tecken med ASCII-värde mindre än eller lika med ’U + 0020 ’eller’ 32 ’ | tar bort alla mellanslag enligt unicode |
Låt oss titta på exemplet där vi kommer att använda blanktecken högre än 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()+"\""); }}
utgång:
Before: " String with space "After trim: " String with space "After strip: "String with space"
i exemplet ovan kan vi se att trim-metoden inte kan ta bort mellanslag som läggs till med ’\u2001’ unicode-tecken.
Obs: Om du kör på Windows-dator kanske du inte kan se liknande utdata på grund av begränsad unicode-uppsättning. Du kan använda online-kompilatorer för att köra program. Vissa online kompilator länkar är som nedan,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () metod Java 11
Tillagd i Java 11, stripLeading () – metoden tar bort alla ledande mellanslag från en sträng.
liknande strip method stripLeading använder också tecken.isWhitespace (int) för identifyng vita utrymmen.
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()+"\""); }}
utgång:
Before: " String with space "After : "String with space "
stripterailing () metod Java 11
Tillagd i Java 11, stripterailing () – metoden tar bort alla slutrum från en sträng.
liknande strip metod stripterailing använder också tecken.isWhitespace (int) för att identifiera vita utrymmen.
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()+"\""); }}
utgång:
Before:" String with space "After :" String with space"
ersätt (CharSequence target, CharSequence replacement):
tillagd från java 1.5 används denna metod för att ersätta varje målsträng med den angivna ersättningssträngen.
den här metoden ersätter alla matchande målelement.
Obs: ytterligare en metod ersätter (char oldChar, char newChar) finns i java strängklass. De enda skillnaderna är att denna metod tar enstaka tecken som mål och ersättning. Vi kan inte använda den här metoden för att ta bort utrymme, eftersom vi inte kan ha tomt tecken som ersättning.
exempel för att ta bort alla mellanslag från sträng
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(" ", "") + "\""); }}
utgång:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacement)
Tillagd i java 1.4, detta är en av de mest kraftfulla metoderna för strängmanipulation. Vi kan använda denna metod för många ändamål.
med replaceAll () – metoden kan vi ersätta varje matchande Reguljärt uttryckssubstring med den givna ersättningssträngen. Till exempel för att ta bort alla utrymmen, ta bort ledande utrymmen, ta bort avslutande utrymmen och så vidare.
vi behöver bara skapa rätt Reguljärt uttryck med rätt ersättningsparameter. Några exempel på reguljära uttryck enligt nedan:
\s + | hitta allt utrymme |
^\s + | hitta alla mellanslag vid radstart |
\s + $ | hitta alla mellanslag vid radändning |
exempel för att ersätta mellanslag i sträng,
Obs: i java för att lägga till ’ / ’måste vi använda escape-tecken så för” \ s+ ”måste vi använda” \ \ 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+$", "") + "\""); }}
utgång:
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 att replaceAll () är ganska kraftfull metod om vi använder den med korrekt Reguljärt uttryck.
skillnad mellan replaceAll och ersätt metod
replaceAll () | ersätt() |
---|---|
från Java 1.4 | från Java 1.5 |
accepterar Reguljärt uttryck för målidentifiering | accepterar sträng för målidentifiering |
används för fix eller dynamisk strängbyte | används för fix strängbyte |
tar bort tecken med ASCII-värde mindre än eller lika med ’U + 0020 ’eller’ 32 ’ | tar bort alla mellanslag enligt unicode |
replaceFirst (Strängregex, strängbyte)
Tillagd i java 1.4, ersätter replaceFirst metod endast den första matchen av givet Reguljärt uttryck med ersättningssträng.
denna metod kan vara mycket användbar om du bara behöver ersätta endast en första förekomst. Om vi till exempel bara behöver ta bort Ledande mellanslag kan vi använda ”\\S+” eller ”^\\s+”.
vi kan också använda den här metoden för att ta bort efterföljande mellanslag genom att använda ”\\s+$” Reguljärt uttryck. Eftersom detta uttryck bara matchar de sista mellanslag i rad. Så sista utrymmen betraktas som den första matchen för denna metod.
Låt oss ta ett exempel för att ta bort inledande och efterföljande mellanslag från sträng
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+$", "") + "\""); }}
utgång
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Snabbspårläsning :
- det finns olika sätt att ta bort mellanslag från sträng i java
- trim() är den vanligaste metoden som används för att ta bort mellanslag i sträng
- trim-metoden är inte unicode-medveten och använder ascii-värde för att identifiera mellanslag
- från java 11 ny metod ’strip()’ läggs till för att ta bort mellanslag
- Metodremsa är Unicode aware och det bör användas för att ta bort mellanslag speciellt i flerspråkigt fall
- från java 11 metoder som stripleading() och stripterailing() är Aded för att ta bort Ledande och avslutande mellanslag.
- för mer kontrollerad borttagning av utrymmen kan vi använda replaceAll (), replace (), replaceFirst()