J'ai une chaîne comme celle-ci:
mysz = "name=john age=13 year=2001";
Je souhaite supprimer les espaces blancs de la chaîne. J'ai essayé trim()
mais cela ne supprime que les espaces blancs avant et après la chaîne entière. J'ai également essayé, replaceAll("\\W", "")
mais le =
fichier est également supprimé.
Comment puis-je réaliser une chaîne avec:
mysz2 = "name=johnage=13year=2001"
java
whitespace
zyamat
la source
la source
\\W
signifie tous les non-mots voir download.oracle.com/javase/6/docs/api/java/util/regex/…Réponses:
st.replaceAll("\\s+","")
supprime tous les espaces et les caractères non visibles (par exemple, tabulation\n
).st.replaceAll("\\s+","")
etst.replaceAll("\\s","")
produire le même résultat.Le deuxième regex est 20% plus rapide que le premier, mais à mesure que le nombre d'espaces consécutifs augmente, le premier fonctionne mieux que le second.
Attribuez la valeur à une variable, si elle n'est pas utilisée directement:
la source
\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 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.)(Modifier: Comme indiqué, vous devez échapper à la barre oblique inverse si vous souhaitez
\s
atteindre le moteur d'expression régulière, ce qui entraîne\\s
.)la source
La réponse la plus correcte à la question est:
Je viens d'adapter ce code à partir des autres réponses. Je le poste car en plus d'être exactement ce que la question demandait, cela démontre également que le résultat est retourné sous forme de 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 pourraient 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.)
la source
S
mais n'écrase pas la chaîne quiS
pointe vers.Que diriez-vous
replaceAll("\\s", "")
. Reportez-vous ici .la source
Une façon de gérer les manipulations de chaînes est StringUtils de Apache commons.
Vous pouvez le trouver ici . commons-lang inclut beaucoup plus et est bien supporté.
la source
Si vous devez également supprimer des espaces incassables, vous pouvez mettre à niveau votre code comme ceci:
la source
" ab c "
Si vous préférez les classes utilitaires aux expressions régulières, il existe une méthode trimAllWhitespace (String) dans StringUtils dans Spring Framework.
la source
Vous avez déjà la bonne réponse de Gursel Koca, mais je pense qu'il y a de fortes chances que ce ne soit pas vraiment ce que vous voulez faire. Que diriez-vous d'analyser les valeurs-clés à la place?
la source
Tu devrais utiliser
au lieu de:
De cette façon, cela fonctionnera avec plus d'un espace entre chaque chaîne. Le signe + dans l'expression régulière ci-dessus signifie "un ou plusieurs \ s"
la source
replaceAll
répète jusqu'à ce que le motif ne corresponde à aucune partie de la chaîne.+
peut le rendre CPU légèrement plus convivial, car les espaces consécutifs est gérée en une seule opération de remplacement, mais c'est la seule différence dans ce cas. C'est en effet leAll
, pas celui+
qui remplace les espaces non consécutifs dans la chaîne.Pour ce faire, la méthode la plus simple consiste à utiliser la
org.apache.commons.lang3.StringUtils
classe decommons-lang3
bibliothèque 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 et elle vous renverra une chaîne après en 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.la source
Vous pouvez le faire si simplement en
la source
la source
// ça marche bien avec tous les espaces * n'oubliez pas l'espace dans la piqûre b
la source
\W
signifie "caractère non mot". Le motif des caractères d'espacement est\s
. Ceci est bien documenté dans le javadoc Pattern .la source
En java, nous pouvons faire l'opération suivante:
pour cela, vous devez importer les packages suivants dans votre programme:
j'espère que cela vous aidera.
la source
En utilisant Pattern And Matcher, il est plus dynamique.
la source
Utilisation
mysz.replaceAll("\\s+","");
la source
Utiliser une classe d'utilisation de chaîne apache est préférable pour éviter NullPointerException
Production
la source
Lors de l'utilisation
st.replaceAll("\\s+","")
dans Kotlin , assurez-vous d'envelopper"\\s+"
avec Regex :la source
D'abord avec de l'espace, ensuite sans espace.
Ensuite, c'est fait.
la source
[ \t\n\x0B\f\r]
. Vous ne faites que des[ ]
espaces normaux .la source
il existe de nombreuses façons de résoudre ce problème. vous pouvez utiliser la fonction split ou remplacer la fonction de Strings.
pour plus d'informations, reportez-vous au problème bizarre http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
la source
Pour supprimer des espaces dans votre exemple, voici une autre façon de procéder:
Ce qu'il fait, c'est qu'il le convertit en un tableau avec les espaces étant les séparateurs, puis il combine les éléments du tableau ensemble sans les espaces.
Cela fonctionne plutôt bien et est facile à comprendre.
la source
Il y a d'autres caractères d'espace qui existent aussi dans les chaînes. Il est donc possible que nous devions remplacer les caractères d'espace par les chaînes.
Ex: ESPACE NO-BREAK, ESPACE TROIS PAR EM, ESPACE DE PUNCTUATION
Voici la liste des caractères spatiaux http://jkorpela.fi/chars/spaces.html
Nous devons donc modifier
\ u2004 nous pour ESPACE TROIS POUR EM
s.replaceAll ("[\ u0020 \ u2004]", "")
la source
Les espaces blancs peuvent être supprimés à l'aide de la fonction isWhitespace de la classe de caractères.
la source
Séparez chaque groupe de texte dans sa propre sous-chaîne, puis concaténez ces sous-chaînes:
la source
Cela pourrait aider.
la source
Vous pouvez également consulter le code Java ci-dessous. Les codes suivants n'utilisent aucune méthode "intégrée".
Contribution:
Production:
la source
la source
Beaucoup de réponses sont fournies. Je voudrais donner une solution qui est tout à fait lisible et meilleure que regex.
la source