Quel modèle regex aurait besoin je passer à la méthode java.lang.String.split()
pour diviser une chaîne en un tableau de sous-chaînes en utilisant tous les caractères blancs (» », « \ t », « \ n », etc.) comme délimiteurs?Comment diviser une chaîne avec des caractères blancs comme délimiteurs?
Répondre
Quelque chose dans les lignes de
myString.split("\\s+");
Ce regroupe tous les espaces blancs comme séparateur.
Donc, si j'ai la chaîne:
"Hello[space][tab]World"
Cela devrait donner les chaînes "Hello"
et "World"
et omettre l'espace vide entre le [space]
et le [tab]
. Comme VonC l'a signalé, la barre oblique inverse devrait être échappée, car Java essaierait d'abord d'échapper la chaîne à un caractère spécial, et enverrait que soit analysé. Ce que vous voulez, c'est le littéral "\s"
, ce qui signifie que vous devez passer "\\s"
. Cela peut être un peu déroutant.
Le \\s
est équivalent à [ \\t\\n\\x0B\\f\\r]
« \\ s + » devrait faire l'affaire
Pourquoi + à la fin? – Floella
@Anarelle il répète au moins une fois la capture de caractères de l'espace, et autant de fois que possible: voir [https://regex101.com/r/dT7wG9/1](https://regex101.com/r/dT7wG9/1) ou [http://rick.measham.id.au/paste/explain.pl?regex=\s%2B] (http: //rick.measham.id.au/paste/explain.pl? regex = \ s% 2B) ou [http://regexper.com/#
VonC
Dans la plupart des dialectes regex il y a un ensemble de caractère pratique résumés que vous pouvez utiliser pour ce genre de chose - ce sont des bons à retenir:
\w
- Correspond à n'importe quel mot.
\W
- Tout caractère non-mot.
\s
- Autorise tout caractère blanc.
\S
- Correspond à tout autre caractère que l'espace blanc.
\d
- Correspond à n'importe quel chiffre.
\D
- Matchs tout sauf chiffres.
Une recherche de "Regex Cheatsheets" devrait vous récompenser avec beaucoup de résumés utiles.
lien utile: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html –
Le lien ne marche plus. s'il vous plaît mettre à jour –
grand info merci – Simmant
Comme il est une expression régulière, et je suppose u voudrais également pas les caractères non alphanumériques comme des virgules, des points, etc. qui pourraient être entourés par des espaces (par exemple"Un, deux" devrait donner [un] [deux]), il devrait être:
myString.split(/[\s\W]+/)
Le code Java fourni ici ne compile pas. – Stephan
Pour obtenir ce travail en Javascript, je devais faire ce qui suit:
myString.split(/\s+/g)
Ceci est en Javascript. Je ne faisais pas attention non plus :) :) – miracle2k
Oups. Mon erreur. Peut-être que cette réponse aidera encore d'autres personnes qui trébuchent sur ce sujet en cherchant une réponse Javascript. :-) –
Haha Je cherchais une réponse pour JavaScript, je suis tombé par hasard sur cette question et j'ai remarqué votre réponse avant de partir. +1 – Kris
Apache Commons Lang a une méthode pour diviser une chaîne avec des caractères blancs comme délimiteur:
StringUtils.split("abc def")
Cela peut être plus facile à utiliser qu'un motif regex.
vous pouvez diviser une chaîne par saut de ligne en utilisant l'instruction suivante:
String textStr[] = yourString.split("\\r?\\n");
vous pouvez diviser une chaîne par des espaces blancs en utilisant la déclaration suivante:
String textStr[] = yourString.split("\\s+");
vous pouvez également avoir un UniCode xa0 espace insécable ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
cela m'aide! –
Cela a fonctionné pour moi aussi :)! – aravind
String str = "Hello World";
String res[] = str.split("\\s+");
En quoi est-ce différent de la réponse acceptée? – Stephan
étude ce code .. bonne chance
import java.util.*;
class Demo{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Input String : ");
String s1 = input.nextLine();
String[] tokens = s1.split("[\\s\\xA0]+");
System.out.println(tokens.length);
for(String s : tokens){
System.out.println(s);
}
}
}
Pouvez-vous s'il vous plaît détailler votre réponse? – Stephan
- 1. Diviser une chaîne avec des accolades comme délimiteurs?
- 2. Comment diviser une chaîne sur une séquence de caractères fixe?
- 3. Comment puis-je diviser une chaîne en rubis maintien des espaces blancs dans la division
- 4. Comment diviser une chaîne supprimée avec l'encapsulation et les échappements
- 5. Comment diviser une chaîne avec le caractère majuscule dans l'iPhone
- 6. Comment diviser une chaîne en une liste?
- 7. Parsing une chaîne contenant des caractères échappées en Java
- 8. Division de chaîne sensible au contexte, préservation des délimiteurs
- 9. Comment diviser une chaîne en plusieurs blocs de deux caractères chacun en Perl?
- 10. Comment diviser une chaîne en PHP
- 11. Comment diviser une chaîne en sous-chaînes sur iOS?
- 12. espaces blancs Version du milieu de chaîne
- 13. Expression régulière pour trouver une chaîne comprise entre deux caractères tout en EXCLUANT les délimiteurs
- 14. Utilisation de la découpe avec des délimiteurs non imprimables
- 15. Algorithme standard pour marquer une chaîne, garder des délimiteurs (en PHP)
- 16. stringWithFormat produit chaîne avec des caractères charabia
- 17. Linux ligne de commande: diviser une chaîne
- 18. Email Templating avec délimiteurs
- 19. Comment puis-je analyser une chaîne contenant des caractères génériques et des classes de caractères dans Ruby?
- 20. Comment traiter une chaîne ASCII comme unicode et annuler l'échappement des caractères d'échappement en python?
- 21. Ignorer les délimiteurs échappés (virgules) avec awk?
- 22. Comment diviser une chaîne en parties - Chiffres romains
- 23. Méthode de strip pour les caractères non-blancs?
- 24. Identification des espaces blancs en C++
- 25. Comment générer des séquences de caractères comme hexadécimal avec une base différente?
- 26. Utiliser boost :: tokenizer avec des délimiteurs de chaînes
- 27. comment itérer des caractères individuels dans une chaîne Lua?
- 28. Afficher QUELQUES caractères invisibles/espaces blancs dans Eclipse
- 29. Comment créer des éléments UIToolbar non blancs?
- 30. Remplacer plusieurs caractères dans une chaîne (XSLT)
Merci pour ce rappel. Je viens de coder de la hanche :) –
Notez que vous devez d'abord 'trim()': 'trim(). Split (" \\ s ++ ")' - sinon, par ex. la division 'a b c' émettra deux chaînes vides en premier. –
Pourquoi avez-vous utilisé quatre barres obliques inverses vers la fin de votre réponse? c'est à dire. '" \\\\ s "'? –