La manipolazione delle stringhe viene eseguita più spesso durante la programmazione. Come rimuovere gli spazi dentro o intorno al testo della stringa. Questo noto anche come ‘striscia’ spegni gli spazi nella stringa. Quindi fino ad ora siamo tutti consapevoli dei diversi modi per rimuovere gli spazi dalla stringa in java, vale a dire trim, replaceAll. Tuttavia, java 11 ha apportato alcune nuove aggiunte a questi metodi come, strip , stripLeading, Stritrailing.
La maggior parte delle volte, usiamo solo il metodo trim per rimuovere gli spazi. Non ci fermiamo mai e pensiamo che ci possa essere un modo migliore per soddisfare le nostre esigenze? Certo, trim () funziona bene per la maggior parte dei casi, ma ci sono molti metodi diversi in java. Ognuno con i suoi vantaggi e svantaggi. Come decidiamo quale metodo ci si adatta meglio?
Bene, in questo blog tratteremo i diversi metodi in dettaglio.
- trim (): Rimozione degli spazi iniziali e finali dalla stringa
- strip(): Rimuove gli spazi all’inizio e alla fine della stringa. Il metodo della striscia è charset Unicode consapevoli
- trim vs striscia: Differenze tra assetto e il metodo della striscia
- stripLeading(): Rimuove gli spazi bianchi e solo a partire dall’inizio della stringa
- stripTrailing(): Rimuove gli spazi bianchi e solo dalla fine della stringa
- replace(): Sostituisce tutti i caratteri di destinazione con il nuovo personaggio
- replaceAll(): Sostituisce il tutto abbinato personaggi con carattere di novità. Questo metodo prende espressione regolare come input per identificare i target sottostringa che deve essere sostituito
- replaceAll vs sostituire: Differenze tra sostituzione e metodo replaceAll
- replaceFirst(): Sostituisce solo la prima occorrenza di destinazione sottostringa con la nuova stringa di sostituzione
Diversi modi per rimuovere gli spazi dalla stringa in java
punto Più importante da notare è che in java un oggetto string è immutabile. Significa che non possiamo modificare una stringa, quindi tutti i metodi restituiscono una nuova stringa con tutte le trasformazioni.
metodo trim() in java
trim() è il metodo più comunemente usato dagli sviluppatori Java per rimuovere gli spazi iniziali e finali. Per il metodo trim spazio carattere indica qualsiasi carattere il cui valore ASCII è minore o uguale a 32 (‘U+0020’).
Esempio di metodo trim per rimuovere gli spazi:
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"
metodo strip() Java 11
Nella versione di Java 11 è stato aggiunto un nuovo metodo strip() per rimuovere gli spazi iniziali e finali dalla stringa.
Questo metodo è stato aggiunto in quanto vi sono vari caratteri di spazio secondo gli standard Unicode con valore ASCII superiore a 32(‘U+0020’). Ex: 8193(U+2001).
Per identificare questi caratteri di spazio, è stato aggiunto un nuovo metodo isWhitespace(int) da Java 1.5 nella classe Character. Questo metodo utilizza unicode per identificare i caratteri di spazio. Puoi leggere di più sui caratteri di spazio unicode qui.
Il metodo strip utilizza questo carattere.Metodo isWhitespace (int) per coprire un’ampia gamma di caratteri di spazi bianchi e rimuoverli.
Esempio di 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
stato=in esecuzione
Before strip: " String with space "After strip: "String with space"
Differenza tra assetto e la striscia di metodo in java
trim() | striscia() |
---|---|
Da Java 1 | > > In Java 11 |
Utilizza codepoint(ASCII) valore | Utilizza il valore Unicode |
Rimuove iniziali e finali di carattere(spazio) | Rimuove iniziali e finali(carattere di spazio) |
Rimuove i caratteri di ASCII valore inferiore o uguale a ‘U+0020′ o ’32’ | Rimuove tutti i caratteri di spazio in base a unicode |
Diamo un’occhiata all’esempio in cui useremo il carattere di spazio bianco superiore a 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()+"\""); }}
Uscita:
Before: " String with space "After trim: " String with space "After strip: "String with space"
Nell’esempio sopra possiamo vedere che il metodo trim non è in grado di rimuovere il carattere spazio aggiunto dal carattere unicode ‘\u2001’.
Nota: se si esegue su un computer Windows, potrebbe non essere possibile visualizzare l’output simile a causa del set unicode limitato. È possibile utilizzare compilatori online per eseguire il programma. Alcuni link del compilatore online sono i seguenti,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
stripLeading () metodo Java 11
Aggiunto in Java 11, stripLeading () metodo rimuove tutti gli spazi iniziali da una stringa.
Simile al metodo strip stripLeading utilizza anche il carattere.isWhitespace (int) per identificare gli spazi bianchi.
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()+"\""); }}
Uscita:
Before: " String with space "After : "String with space "
Striptailing () metodo Java 11
Aggiunto in Java 11, Striptailing() metodo rimuove tutti gli spazi finali da una stringa.
Simile al metodo strip Striptailing utilizza anche il carattere.isWhitespace (int) per identificare gli spazi bianchi.
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()+"\""); }}
Uscita:
Before:" String with space "After :" String with space"
replace(CharSequence target, CharSequence replacement):
Aggiunto da java 1.5, Questo metodo viene utilizzato per sostituire ogni sottostringa di destinazione con la stringa di sostituzione specificata.
Questo metodo sostituisce tutti gli elementi di destinazione corrispondenti.
Nota: Un altro metodo di sostituzione (char oldChar, char newChar) è presente nella classe java string. Le uniche differenze sono che questo metodo prende singolo carattere come destinazione e sostituzione. Non possiamo usare questo metodo per rimuovere lo spazio, perché non possiamo avere un carattere vuoto come sostituzione.
Esempio per rimuovere tutti gli spazi dalla stringa
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(" ", "") + "\""); }}
Output:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacement)
Aggiunto in java 1.4, questo è uno dei metodi più potenti per la manipolazione delle stringhe. Possiamo usare questo metodo per molti scopi.
Usando il metodo replaceAll() possiamo sostituire ogni sottostringa di espressioni regolari corrispondente con la stringa di sostituzione data. Ad esempio per rimuovere tutti gli spazi, rimuovere gli spazi iniziali, rimuovere gli spazi finali e così via.
Abbiamo solo bisogno di creare un’espressione regolare corretta con il parametro di sostituzione corretto. Alcuni esempi di espressioni regolari, come di seguito:
\s+ | Trovare tutto lo spazio |
^\s+ | Trovare tutti gli spazi in linea di principio |
\s+$ | Trovare tutti gli spazi a fine riga |
Esempio per la sostituzione di spazi nella stringa
Nota: In java per aggiungere ‘/’ dovremmo usare il carattere di escape, quindi per “\s+” dobbiamo usare “\\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+$", "") + "\""); }}
Uscita:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
Come possiamo vedere che replaceAll() è un metodo piuttosto potente se lo usiamo con una corretta espressione regolare.
Differenza tra replaceAll e sostituire metodo
replaceAll () | sostituire() |
---|---|
Da Java 1.4 | Da Java 1.5 |
Accetta espressione regolare per l’identificazione dei target | Accetta la stringa di identificazione del bersaglio |
Utilizzato per fissare o dinamico sostituzione della stringa | Utilizzato per fissare la stringa di sostituzione |
Rimuove i caratteri di ASCII valore inferiore o uguale a ‘U+0020′ o ’32’ | Rimuove tutti i caratteri di spazio secondo unicode |
replaceFirst(String regex, la sostituzione della Stringa)
Aggiunto in java 1.4, Il metodo replaceFirst sostituisce solo la prima corrispondenza dell’espressione regolare data con la stringa di sostituzione.
Questo metodo può essere molto utile se è sufficiente sostituire solo una prima occorrenza. Ad esempio, se abbiamo solo bisogno di rimuovere gli spazi iniziali, possiamo usare “\\s+” o “^\\s+”.
Possiamo anche usare questo metodo per rimuovere gli spazi finali usando l’espressione regolare “\\s+ expression”. Poiché questa espressione corrisponderà solo agli ultimi spazi in linea. Quindi gli ultimi spazi sono considerati come la prima corrispondenza per questo metodo.
Facciamo un esempio per rimuovere gli spazi iniziali e finali dalla stringa
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+$", "") + "\""); }}
Output
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Fast track reading :
- Ci sono diversi modi per rimuovere gli spazi da una stringa in java
- trim() è il metodo più comune utilizzato per la rimozione degli spazi nella stringa
- tagliare il metodo non è a conoscenza di unicode e utilizza il valore ascii per identificare i caratteri di spazio
- java con 11 nuovo metodo di ‘striscia()”è aggiunto per la rimozione di spazi
- Metodo di striscia è a conoscenza di unicode e dovrebbe essere utilizzato per la rimozione degli spazi appositamente multilingue caso
- > > In Java 11 metodi come stripLeading() e stripTrailing() sono aggiunti per rimuovere gli spazi iniziali e finali.
- Per una rimozione più controllata degli spazi possiamo usare replaceAll (), replace (), replaceFirst()