Rimozione di spazi vuoti da stringhe in Java

Ho una stringa come questa:

mysz = "name=john age=13 year=2001"; 

Voglio rimuovere gli spazi bianchi nella stringa. Ho provato trim() ma questo rimuove solo gli spazi bianchi prima e dopo l’intera stringa. Ho anche provato replaceAll("\\W", "") ma poi anche = viene rimosso.

Come posso ottenere una stringa con:

 mysz2 = "name=johnage=13year=2001" 

st.replaceAll("\\s+","") rimuove tutti gli spazi bianchi e i caratteri non visibili (ad es., tab, \n ).


st.replaceAll("\\s+","") e st.replaceAll("\\s","") producono lo stesso risultato.

La seconda regex è del 20% più veloce della prima, ma man mano che aumenta il numero di spazi consecutivi, il primo si comporta meglio del secondo.


Assegna il valore a una variabile, se non utilizzato direttamente:

 st = st.replaceAll("\\s+","") 
 replaceAll("\\s","") 

\w = Qualcosa che è un carattere di parola

\W = Tutto ciò che non è un carattere di parola (compresi i segni di punteggiatura, ecc.)

\s = Tutto ciò che è un carattere di spazio (incluso spazio, caratteri di tabulazione, ecc.)

\S = Tutto ciò che non è un carattere di spazio (incluse sia lettere che numeri, oltre alla punteggiatura, ecc.)

(Modifica: come indicato, devi uscire dal backslash se vuoi raggiungere il motore regex, risultando in \\s .)

La risposta più corretta alla domanda è:

 String mysz2 = mysz.replaceAll("\\s",""); 

Ho appena adattato questo codice dalle altre risposte. Lo sto postando perché oltre ad essere esattamente ciò che la domanda ha richiesto, dimostra anche che il risultato viene restituito come una nuova stringa, la stringa originale non viene modificata in quanto alcune delle risposte suggeriscono.

(Gli sviluppatori esperti di Java potrebbero dire “ovviamente, non si può effettivamente modificare una stringa”, ma il pubblico di destinazione per questa domanda potrebbe non saperlo.)

Che ne dici di replaceAll("\\s", "") . Fare riferimento qui .

Se si preferiscono le classi di utilità alle espressioni regolari , esiste un metodo trimAllWhitespace (String) in StringUtils in Spring Framework.

Se devi rimuovere anche gli spazi non infrangibili, puoi aggiornare il tuo codice in questo modo:

 st.replaceAll("[\\s|\\u00A0]+", ""); 

Un modo per gestire le manipolazioni di String è StringUtils dai comuni di Apache.

 String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces); 

Puoi trovarlo qui . commons-lang include molto di più ed è ben supportato.

Hai già ricevuto la risposta corretta da Gursel Koca, ma credo che ci siano buone probabilità che questo non sia ciò che vuoi veramente fare. Che ne dici invece di analizzare i valori-chiave?

 import java.util.Enumeration; import java.util.Hashtable; class SplitIt { public static void main(String args[]) { String person = "name=john age=13 year=2001"; for (String p : person.split("\\s")) { String[] keyValue = p.split("="); System.out.println(keyValue[0] + " = " + keyValue[1]); } } } 

produzione:
nome = john
età = 13
anno = 2001

Dovresti usare

 s.replaceAll("\\s+", ""); 

invece di:

 s.replaceAll("\\s", ""); 

In questo modo, funzionerà con più di uno spazio tra ogni stringa. Il segno + nella regex sopra indica “uno o più \ s”

Puoi farlo così semplicemente da

 String newMysz = mysz.replace(" ",""); 
 public static void main(String[] args) { String s = "name=john age=13 year=2001"; String t = s.replaceAll(" ", ""); System.out.println("s: " + s + ", t: " + t); } Output: s: name=john age=13 year=2001, t: name=johnage=13year=2001 

Il modo più semplice per farlo è utilizzare la class org.apache.commons.lang3.StringUtils della libreria commons-lang3 , ad esempio ” commons-lang3-3.1.jar “, ad esempio.

Usa il metodo statico ” StringUtils.deleteWhitespace(String str) ” sulla stringa di input e ti restituirà una stringa dopo aver rimosso tutti gli spazi bianchi da essa. Ho provato la stringa di esempio ” name=john age=13 year=2001 ” e mi ha restituito esattamente la stringa che volevi – ” name=johnage=13year=2001 “. Spero che questo ti aiuti.

 String a="string with multi spaces "; //or this String b= a.replaceAll("\\s+"," "); String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," "); 

// funziona bene con qualsiasi spazio * non dimenticare lo spazio nella puntura b

\W significa “carattere non parola”. Il pattern per i caratteri di spaziatura è \s . Questo è ben documentato nel Pattern javadoc .

In java possiamo fare le seguenti operazioni:

 String pattern="[\\s]"; String replace=""; part="name=john age=13 year=2001"; Pattern p=Pattern.compile(pattern); Matcher m=p.matcher(part); part=m.replaceAll(replace); System.out.println(part); 

per questo è necessario importare i seguenti pacchetti per il tuo programma:

 import java.util.regex.Matcher; import java.util.regex.Pattern; 

spero che ti possa aiutare.

Usando Pattern And Matcher è più dinamico.

 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RemovingSpace { /** * @param args * Removing Space Using Matcher */ public static void main(String[] args) { String str= "jld fdkjg jfdg "; String pattern="[\\s]"; String replace=""; Pattern p= Pattern.compile(pattern); Matcher m=p.matcher(str); str=m.replaceAll(replace); System.out.println(str); } } 

Usa mysz.replaceAll("\\s+","");

 mysz = mysz.replace(" ",""); 

Prima con lo spazio, il secondo senza spazio.

Quindi è fatto.

 import java.util.*; public class RemoveSpace { public static void main(String[] args) { String mysz = "name=john age=13 year=2001"; Scanner scan = new Scanner(mysz); String result = ""; while(scan.hasNext()) { result += scan.next(); } System.out.println(result); } } 

Utilizzare la class di utilizzo della stringa apache è meglio per evitare NullPointerException

 org.apache.commons.lang3.StringUtils.replace("abc def ", " ", "") 

Produzione

 abcdef 

ci sono molti modi per risolvere questo problema. è ansible utilizzare la funzione di divisione o la funzione di sostituzione delle stringhe.

per maggiori informazioni riferirsi al problema smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html

Per rimuovere spazi nel tuo esempio, questo è un altro modo per farlo:

 String mysz = "name=john age=13 year=2001"; String[] test = mysz.split(" "); mysz = String.join("", mysz); 

Ciò che fa è convertirlo in un array con gli spazi che sono i separatori, e quindi combina insieme gli elementi nell’array senza gli spazi.

Funziona abbastanza bene ed è facile da capire.

 public static String removeWhiteSpaces(String str){ String s = ""; char[] arr = str.toCharArray(); for (int i = 0; i < arr.length; i++) { int temp = arr[i]; if(temp!=32 && temp!=9){ // 32 ASCII for space and 9 is for Tab s+=arr[i]; } } return s; } 

Questo potrebbe aiutare.

Separare ciascun gruppo di testo nella propria sottostringa e quindi concatenare tali sottostringhe. ex.

 public Address(String street, String city, String state, String zip ) { this.street = street; this.city = city; //Now checking to make sure that state has no spaces... int position = state.indexOf(" "); if(position >=0) { //now putting state back together if it has spaces... state = state.substring(0, position) + state.substring(position + 1); } 

Lo spazio bianco può essere rimosso usando la funzione isWhitespace da Character Class.

 public static void main(String[] args) { String withSpace = "Remove white space from line"; StringBuilder removeSpace = new StringBuilder(); for (int i = 0; i 

Ci sono anche altri caratteri di spazio nelle stringhe. Quindi, potrebbe essere necessario sostituire lo spazio con le stringhe.

Es: SPAZIO NO-BREAK, SPAZIO PER 3 PERDI, SPAZIO DI PERCENTRAZIONE

Ecco la lista di space char http://jkorpela.fi/chars/spaces.html

Quindi dobbiamo modificare

noi per lo spazio di tre per mille

s.replaceAll ( “[\ u0020 \ u2004]”, “”)

È ansible ottenere ciò senza utilizzare replaceAll () o qualsiasi metodo predefinito in Java. questo modo è preferito: –

 public class RemoveSpacesFromString { public static void main(String[] args) { // TODO Auto-generated method stub String newString; String str = "prashant is good" ; int i; char[] strArray = str.toCharArray(); StringBuffer sb = new StringBuffer(); for(i = 0; i 

Il codice che vuoi è

 str.replaceAll("\\s",""); 

Questo rimuoverà tutti gli spazi bianchi.

Prova questo

  String str="name=john age=13 year=2001"; String s[]=str.split(" "); StringBuilder v=new StringBuilder(); for (String string : s) { v.append(string); } str=v.toString();