Stringmanipulatie wordt het vaakst gedaan tijdens het programmeren. Zoals het verwijderen van spaties in of rond de tekst van de tekenreeks. Dit ook wel bekend als ‘strip’ ping uit spaties in de string. Dus tot nu toe zijn we ons allemaal bewust van de verschillende manieren om spaties te verwijderen uit string in java, namelijk trim, replaceAll. Echter, java 11 heeft een aantal nieuwe toevoegingen aan deze met methoden zoals, strip, stripLeading , stripTrailing.
meestal gebruiken we gewoon de trim methode voor het verwijderen van spaties. We stoppen nooit en denken dat er misschien een betere manier is om aan onze behoefte te voldoen? Zeker, trim () werkt goed voor de meeste gevallen, maar er zijn veel verschillende methoden in java. Elk met zijn eigen voor-en nadelen. Hoe beslissen we welke methode het beste bij ons past?
wel, in deze blog zullen we de verschillende methoden in detail behandelen.
- trim(): spaties aan het begin en aan het einde van de tekenreeks verwijderen
- strip(): Verwijdert spaties aan het begin en einde van de tekenreeks. Stripmethode is Unicode-tekenset bewust
- trim vs strip: verschillen tussen trim en stripmethode
- stripLeading(): verwijdert alleen witruimten aan het begin van de tekenreeks
- stripTrailing(): verwijdert alleen witruimten aan het einde van de tekenreeks
- replace(): vervangt alle doeltekens door nieuw teken
- replaceAll(): vervangt alle overeenkomende tekens door nieuw teken. Deze methode gebruikt reguliere expressie als invoer om doelsubstring te identificeren die vervangen moet worden
- replaceAll vs replace: verschillen tussen replace en replaceAll method
- replaceFirst(): vervangt alleen het eerste voorkomen van doelsubstring door nieuwe vervangende string
verschillende manieren om spaties uit de tekenreeks in java te verwijderen
het belangrijkste punt om op te merken is dat in java Een string object onveranderlijk is. Het betekent dat we een string niet kunnen wijzigen, vandaar dat alle methoden een nieuwe string met alle transformaties retourneren.
trim() methode in java
trim () is de meest gebruikte methode door java-ontwikkelaars voor het verwijderen van voor-en achterspaties. Voor de snijmethode wordt onder spatiekarakter verstaan elk teken waarvan de ASCII-waarde kleiner is dan of gelijk is aan 32 (“u+0020”).
voorbeeld van de snijmethode om spaties te verwijderen:
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() +"\""); }}
in CommandLineRunnerImpl
status = running
Before trim: " String with space "After trim: "String with space"
strip () methode Java 11
in de release van Java 11 is de nieuwe strip() methode toegevoegd om voor-en achterspaties uit de String te verwijderen.
deze methode is toegevoegd omdat er verschillende spatietekens zijn volgens Unicode-normen met een ASCII-waarde van meer dan 32 (“u+0020”). Ex: 8193 (U + 2001).
om deze spatietekens te identificeren, werd een nieuwe methode isWhitespace (int) toegevoegd vanuit Java 1.5 in Character class. Deze methode gebruikt unicode om spatietekens te identificeren. U kunt hier meer lezen over Unicode-spatiekarakters.
de stripmethode gebruikt dit teken.isWhitespace (int) methode om een breed scala aan witruimtetekens te dekken en ze te verwijderen.
voorbeeld van strip():
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()+"\""); }}
In CommandLineRunnerImpl
status=lopen
Before strip: " String with space "After strip: "String with space"
Verschil tussen trimmen en strip-methode in java
trim() | strip() |
---|---|
Van Java 1 | Van Java 11 |
Gebruikt codepoint(ASCII) – waarde | maakt Gebruik van de Unicode-waarde |
Verwijdert-en achterrand van teken(spatie), | Verwijdert en achterrand van teken(spatie) |
Verwijdert tekens met ASCII-waarde kleiner is dan of gelijk is aan ‘U+0020′ of ’32’ | verwijdert alle spatietekens volgens unicode |
laten we eens kijken naar het voorbeeld waar we witruimte teken hoger dan 32 (‘u+0020’) unicode gebruiken.
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()+"\""); }}
Output:
Before: " String with space "After trim: " String with space "After strip: "String with space"
in het bovenstaande voorbeeld kunnen we zien dat trim methode is niet in staat om ruimte teken toegevoegd door ‘\u2001’ unicode-teken te verwijderen.
Opmerking: Als u op een windows-machine draait, kunt u mogelijk de vergelijkbare uitvoer niet zien vanwege de beperkte unicode-set. U kunt online compilers gebruiken om programma uit te voeren. Sommige online compiler links zijn zoals hieronder,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () methode Java 11
toegevoegd in Java 11, stripLeading() methode verwijdert alle voorloopspaties uit een String.
net als bij stripmethode gebruikt het strippen ook karakter.isWhitespace (int) voor identifyng witruimtes.
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()+"\""); }}
Output:
Before: " String with space "After : "String with space "
stripTrailing () methode Java 11
toegevoegd in Java 11, stripTrailing() methode verwijdert alle eindigende spaties uit een String.
vergelijkbaar met stripmethode gebruikt stripTrailing ook karakter.isWhitespace (int) voor het identificeren van witruimtes.
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()+"\""); }}
Output:
Before:" String with space "After :" String with space"
replace (charsequence target, charsequence replacement):
toegevoegd vanuit java 1.5, wordt deze methode gebruikt om elke doelsubstring te vervangen door de opgegeven vervangende string.
deze methode vervangt alle overeenkomende doelelementen.
opmerking: nog een methode vervangen (char oldChar, char newChar) is aanwezig in java string class. De enige verschillen is dat deze methode één karakter als doel en vervanging neemt. We kunnen deze methode niet gebruiken om ruimte te verwijderen, omdat we geen leeg teken als vervanging kunnen hebben.
voorbeeld om alle spaties uit tekenreeks
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(" ", "") + "\""); }}
uitvoer te verwijderen:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, string replacement)
toegevoegd in java 1.4, dit is een van de meest krachtige methode voor string manipulatie. We kunnen deze methode voor vele doeleinden gebruiken.
met behulp van de methode replaceAll () kunnen we elke overeenkomende reguliere expressie substring vervangen door de gegeven vervangende string. Bijvoorbeeld voor het verwijderen van alle spaties, het verwijderen van voorloopspaties, het verwijderen van achterliggende spaties enzovoort.
we hoeven alleen maar de juiste reguliere expressie te maken met de juiste vervangende parameter. Sommige reguliere expressie voorbeelden hieronder:
\s+ | Zoek alle ruimte |
^\s+ | Vindt alle spaties aan begin regel |
\s+$ | Vinden van alle ruimtes op de regel die eindigt op |
Bijvoorbeeld de vervanging van spaties in string,
Opmerking: In java toevoegen ‘/’ we moeten gebruik maken van escape-teken voor “\s+” we hebben het gebruik van “\\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+$", "") + "\""); }}
Uitgang:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
omdat we kunnen zien dat replaceAll() is vrij krachtige methode als we het gebruiken met de juiste reguliere expressie.
verschil tussen de methode vervangen en vervangen
replaceAll () | vervangen() |
---|---|
uit Java 1.4 | uit Java 1.5 |
Accepteert reguliere expressie voor het doel van identificatie | Accepteert string voor het doel van identificatie |
wordt Gebruikt voor correctie of dynamische string van vervangende | Gebruikt voor de correctie vervanger |
Verwijdert tekens met ASCII-waarde kleiner is dan of gelijk is aan ‘U+0020′ of ’32’ | Verwijdert alle spaties volgens de unicode – |
replaceFirst(String regex, zijn vervanger)
Toegevoegd in java 1.4, replaceFirst methode vervangt alleen de eerste wedstrijd van de gegeven reguliere expressie met vervangende string.
deze methode kan zeer nuttig zijn als u slechts één eerste voorkomen hoeft te vervangen. Als we bijvoorbeeld alleen voorloopspaties hoeven te verwijderen, kunnen we “\\s+” of “^\\s+”gebruiken.
we kunnen deze methode ook gebruiken om achterliggende spaties te verwijderen met “\\s+$” reguliere expressie. Omdat deze expressie alleen overeenkomt met de laatste spaties in de regel. Dus laatste spaties worden beschouwd als de eerste match voor deze methode.
neem een voorbeeld voor het verwijderen van voor-en achterspaties uit tekenreeks
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+$", "") + "\""); }}
uitvoer
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
fast track reading :
- Er zijn verschillende manieren om te verwijderen van spaties uit de string in java
- trim() is de meest voorkomende methode voor het verwijderen van spaties in string
- trim methode is niet unicode-bewust en maakt gebruik van ascii-waarde te identificeren ruimte tekens
- Van java 11 nieuwe methode ‘strip()’is toegevoegd voor het verwijderen van spaties
- Methode strip is unicode-bewust zijn en het moet worden gebruikt voor het verwijderen van spaties speciaal in meertalige geval
- Van Java-11 methoden zoals stripLeading() en stripTrailing() zijn elegante voor het verwijderen van spaties voor en na.
- voor meer gecontroleerde verwijdering van spaties kunnen we replaceAll(), replaceall(), replaceFirst gebruiken()