Supprimer les espaces des chaînes en Java

J’ai une chaîne comme celle-ci:

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

Je veux supprimer les espaces blancs de la chaîne. J’ai essayé sortingm() mais cela supprime uniquement les espaces avant et après la chaîne entière. J’ai également essayé replaceAll("\\W", "") mais le = également supprimé.

Comment puis-je réaliser une chaîne avec:

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

st.replaceAll("\\s+","") supprime tous les espaces blancs et les caractères non visibles (par exemple, tab, \n ).


st.replaceAll("\\s+","") et st.replaceAll("\\s","") produisent le même résultat.

La deuxième regex est 20% plus rapide que la première, mais plus le nombre d’espaces consécutifs augmente, plus la première est performante que la seconde.


Atsortingbuez la valeur à une variable si elle n’est pas utilisée directement:

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

\w = Tout ce qui est un caractère de mot

\W = Tout ce qui n’est pas un mot (y compris la ponctuation, etc.)

\s = Tout ce qui est un caractère d’espace (y compris l’espace, les tabulations, etc.)

\S = Tout ce qui n’est pas un espace (y compris les lettres et les chiffres, ainsi que la ponctuation, etc.)

(Edit: Comme indiqué, vous devez échapper à la barre oblique inverse si vous souhaitez atteindre le moteur de regex, résultant en \\s .)

La réponse la plus correcte à la question est:

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

Je viens d’adapter ce code à partir des autres réponses. Je le publie car en plus d’être exactement ce que la question demandait, cela démontre également que le résultat est renvoyé sous la forme d’une nouvelle chaîne, la chaîne d’origine n’est pas modifiée comme certaines réponses l’impliquent.

(Les développeurs Java expérimentés peuvent dire “bien sûr, vous ne pouvez pas réellement modifier une chaîne”, mais le public cible de cette question peut ne pas le savoir.)

Que diriez-vous de replaceAll("\\s", "") . Reportez-vous ici .

Si vous préférez les classes utilitaires aux expressions régulières, il existe une méthode sortingmAllWhitespace (Ssortingng) dans SsortingngUtils dans Spring Framework.

Si vous devez également supprimer des espaces incassables, vous pouvez mettre à niveau votre code comme suit:

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

SsortingngUtils d’Apache commons est un moyen de gérer les manipulations de chaînes.

 Ssortingng withoutWhitespace = SsortingngUtils.deleteWhitespace(whitespaces); 

Vous pouvez le trouver ici . commons-lang comprend beaucoup plus et est bien pris en charge.

Vous avez déjà reçu la bonne réponse de Gursel Koca, mais je pense qu’il y a de bonnes chances que ce ne soit pas ce que vous voulez vraiment faire. Pourquoi ne pas parsingr les valeurs-clés à la place?

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

sortie:
nom = John
âge = 13
année = 2001

Tu devrais utiliser

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

au lieu de:

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

De cette façon, il fonctionnera avec plus d’un espace entre chaque chaîne. Le signe + dans la regex ci-dessus signifie “un ou plusieurs \ s”

Vous pouvez le faire simplement en

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

La méthode la plus simple consiste à utiliser la classe org.apache.commons.lang3.SsortingngUtils de la bibliothèque commons-lang3 , par exemple ” commons-lang3-3.1.jar “.

Utilisez la méthode statique ” SsortingngUtils.deleteWhitespace(Ssortingng str) ” sur votre chaîne d’entrée et vous renverra une chaîne après avoir supprimé tous les espaces blancs. J’ai essayé votre exemple de chaîne ” name=john age=13 year=2001 ” et il m’a renvoyé exactement la chaîne que vous vouliez – ” name=johnage=13year=2001 “. J’espère que cela t’aides.

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

// ça marche bien avec tous les espaces * n’oubliez pas l’espace dans les piqûres b

\W signifie “caractère non verbal”. Le motif pour les caractères d’espacement est \s . Ceci est bien documenté dans le javadoc Pattern .

En java on peut faire l’opération suivante:

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

pour cela, vous devez importer les paquets suivants dans votre programme:

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

J’espère que cela vous aidera.

Utiliser Pattern et Matcher est plus dynamic.

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

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

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

D’abord avec l’espace, le second sans espace.

Alors c’est fait.

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

Utiliser apache ssortingng util class est préférable d’éviter NullPointerException

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

Sortie

 abcdef 

il y a plusieurs façons de résoudre ce problème. vous pouvez utiliser la fonction split ou remplacer la fonction de chaînes.

pour plus d’informations se référer smilliar problem http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-ssortingng.html

Pour supprimer des espaces dans votre exemple, ceci est une autre façon de le faire:

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

Cela le fait, il le convertit en un tableau avec les espaces étant les séparateurs, puis il combine les éléments du tableau sans les espaces.

Cela fonctionne plutôt bien et est facile à comprendre.

 public static Ssortingng removeWhiteSpaces(Ssortingng str){ Ssortingng 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; } 

Cela pourrait aider.

Séparez chaque groupe de texte en sa propre sous-chaîne, puis concaténez ces sous-chaînes. ex.

 public Address(Ssortingng street, Ssortingng city, Ssortingng state, Ssortingng 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.subssortingng(0, position) + state.subssortingng(position + 1); } 

L’espace blanc peut supprimer l’utilisation de la fonction isWhitespace de la classe de caractères.

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

Il y a d’autres caractères d’espace qui existent aussi dans les chaînes. Donc, il faut peut-être remplacer les caractères par des chaînes.

Ex: ESPACE SANS PAUSE, ESPACE TRIDIMENSIONNEL, ESPACE DE PONCTIONNEMENT

Voici la liste de l’espace char http://jkorpela.fi/chars/spaces.html

Nous devons donc modifier

\ u2004 nous pour TROIS-PAR-EM ESPACE

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

Vous pouvez y parvenir sans utiliser replaceAll () ou toute méthode prédéfinie en Java. cette façon est préférée: –

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

Le code que vous voulez est

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

Cela supprimera tous les espaces blancs.

Essaye ça

  Ssortingng str="name=john age=13 year=2001"; Ssortingng s[]=str.split(" "); SsortingngBuilder v=new SsortingngBuilder(); for (Ssortingng ssortingng : s) { v.append(ssortingng); } str=v.toSsortingng();