J'ai une chaîne comme celle-ci:
mysz = "name=john age=13 year=2001";
Je veux supprimer les espaces dans la chaîne. J'ai essayé trim()
mais cela supprime uniquement les espaces avant et après toute la chaîne. J'ai aussi essayé replaceAll("\\W", "")
mais le =
est également supprimé.
Comment puis-je réaliser une chaîne avec:
mysz2 = "name=johnage=13year=2001"
st.replaceAll("\\s+","")
supprime tous les espaces et les caractères non visibles (onglet, par exemple, \n
).
st.replaceAll("\\s+","")
et st.replaceAll("\\s","")
produisent le même résultat.
La deuxième expression rationnelle est 20% plus rapide que la première, mais plus le nombre d'espaces consécutifs augmente, plus le premier est performant.
Attribuez 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 Word
\W
= Tout ce qui n'est pas un caractère Word (y compris la ponctuation, etc.)
\s
= Tout ce qui est un caractère d'espace (y compris l'espace, les caractères de tabulation, etc.)
\S
= Tout ce qui n'est pas un caractère d'espacement (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 que \s
atteigne le moteur des expressions rationnelles, ce qui entraîne \\s
.)
La réponse la plus correcte à la question est:
String mysz2 = mysz.replaceAll("\\s","");
Je viens d'adapter ce code à partir des autres réponses. Je le poste car, en plus d'être exactement ce que la question a demandé, cela 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 des 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 risque de ne pas le savoir.)
Que diriez-vous de replaceAll("\\s", "")
. Référez-vous ici .
Si vous devez également supprimer les espaces incassables, vous pouvez mettre à jour votre code comme suit:
st.replaceAll("[\\s|\\u00A0]+", "");
StringUtils de Apache commons est un moyen de gérer les manipulations de String.
String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);
Vous pouvez le trouver ici . Commons-lang en inclut beaucoup plus et est bien pris en charge.
Si vous préférez les utilitaires aux expressions rationnelles, il existe une méthode trimAllWhitespace (String) in StringUtils dans Spring Framework.
Gursel Koca vous a déjà donné la bonne réponse, mais j'estime qu'il y a de bonnes chances que ce ne soit pas ce que vous voulez vraiment faire. Pourquoi ne pas analyser les valeurs-clés?
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]);
}
}
}
sortie:
nom = john
âge = 13
année = 2001
Tu devrais utiliser
s.replaceAll("\\s+", "");
au lieu de:
s.replaceAll("\\s", "");
De cette façon, cela 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 si simplement en
String newMysz = mysz.replace(" ","");
Pour ce faire, le moyen le plus simple consiste à utiliser la classe org.Apache.commons.lang3.StringUtils
de la bibliothèque commons-lang3
telle que "commons-lang3-3.1.jar
" par exemple.
Utilisez la méthode statique "StringUtils.deleteWhitespace(String str)
" sur votre chaîne d’entrée. Elle vous renverra une chaîne après en avoir supprimé tous les espaces. J'ai essayé votre exemple de chaîne "name=john age=13 year=2001
" & elle m'a renvoyé exactement la chaîne que vous vouliez - "name=johnage=13year=2001
". J'espère que cela t'aides.
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
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
// ça marche bien avec n'importe quel espace * n'oubliez pas l'espace dans Sting b
Utiliser Pattern And Matcher est plus dynamique.
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);
}
}
En Java, nous pouvons effectuer l'opération suivante:
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);
pour cela, vous devez importer les packages suivants dans votre programme:
import Java.util.regex.Matcher;
import Java.util.regex.Pattern;
j'espère que cela vous aidera.
Utilisez mysz.replaceAll("\\s+","");
\W
signifie "caractère autre que Word". Le modèle pour les caractères d'espacement est \s
. Ceci est bien documenté dans le Pattern javadoc .
mysz = mysz.replace(" ","");
D'abord avec de l'espace, ensuite sans espace.
Ensuite c'est fait.
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);
}
}
Utiliser Apache string util class est préférable d'éviter NullPointerException
org.Apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
Sortie
abcdef
Il existe d'autres chars d'espace dans les chaînes. Ainsi, nous aurons peut-être besoin de remplacer les caractères par des chaînes.
Ex: ESPACE SANS RUPTURE, ESPACE TROIS PERSONNES, ESPACE DE PUNCTUATION
Voici la liste des caractères d'espacement http://jkorpela.fi/chars/spaces.html
Nous devons donc modifier
\ u2004 nous pour un espace à trois pour cent
s.replaceAll ("[\ u0020\u2004]", "")
il existe de nombreuses façons de résoudre ce problème .. Vous pouvez utiliser la fonction de division ou remplacer la fonction de chaîne.
pour plus d'informations, référez-vous au problème smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
Pour supprimer des espaces dans votre exemple, voici une autre façon de le faire:
String mysz = "name=john age=13 year=2001";
String[] test = mysz.split(" ");
mysz = String.join("", mysz);
Cela permet de le convertir en tableau avec les espaces comme séparateurs, puis de combiner les éléments du tableau sans les espaces.
Cela fonctionne plutôt bien et est facile à comprendre.
Séparez chaque groupe de texte dans sa propre sous-chaîne, puis concaténez ces sous-chaînes. 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);
}
Vous pouvez également consulter le code Java ci-dessous. Les codes suivants n'utilisent aucune méthode "intégrée".
/**
* Remove all characters from an alphanumeric string.
*/
public class RemoveCharFromAlphanumerics {
public static void main(String[] args) {
String inp = "01239Debashish123Pattn456aik";
char[] out = inp.toCharArray();
int totint=0;
for (int i = 0; i < out.length; i++) {
System.out.println(out[i] + " : " + (int) out[i]);
if ((int) out[i] >= 65 && (int) out[i] <= 122) {
out[i] = ' ';
}
else {
totint+=1;
}
}
System.out.println(String.valueOf(out));
System.out.println(String.valueOf("Length: "+ out.length));
for (int c=0; c<out.length; c++){
System.out.println(out[c] + " : " + (int) out[c]);
if ( (int) out[c] == 32) {
System.out.println("Its Blank");
out[c] = '\'';
}
}
System.out.println(String.valueOf(out));
System.out.println("**********");
System.out.println("**********");
char[] whitespace = new char[totint];
int t=0;
for (int d=0; d< out.length; d++) {
int fst =32;
if ((int) out[d] >= 48 && (int) out[d] <=57 ) {
System.out.println(out[d]);
whitespace[t]= out[d];
t+=1;
}
}
System.out.println("**********");
System.out.println("**********");
System.out.println("The String is: " + String.valueOf(whitespace));
}
}
Contribution:
String inp = "01239Debashish123Pattn456aik";
Sortie:
The String is: 01239123456
Lorsque vous utilisez st.replaceAll("\\s+","")
dans Kotlin , veillez à envelopper "\\s+"
avec Regex:
"myString".replace(Regex("\\s+"), "")
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;
}
Cela pourrait aider.
Les espaces blancs peuvent être supprimés à l’aide de la fonction isWhitespace de Character Class.
public static void main(String[] args) {
String withSpace = "Remove white space from line";
StringBuilder removeSpace = new StringBuilder();
for (int i = 0; i<withSpace.length();i++){
if(!Character.isWhitespace(withSpace.charAt(i))){
removeSpace=removeSpace.append(withSpace.charAt(i));
}
}
System.out.println(removeSpace);
}