Bonjour,
J'ai une string du type: "A et B" et C
Je voudrai la découper en trois éléments donc:
"A et B"
et
C
Comment faire ?
En gros je voudrai qu'il ne me découpe pas ce qu'il y a entre guillemets..
Merci
Version imprimable
Bonjour,
J'ai une string du type: "A et B" et C
Je voudrai la découper en trois éléments donc:
"A et B"
et
C
Comment faire ?
En gros je voudrai qu'il ne me découpe pas ce qu'il y a entre guillemets..
Merci
ICI
Ca doit pouvoir t'aider
oui mais ca a chaque fois ca découpe ma chaine "A et B" en deux :(
Tu peux me montrer ton bout de code s'il te plaît?
ben yen a pas vraiement en fait.
Je pensai utiliser les expressions régulières pour extraite ce qui est entre "" et le reste...
Au final je veux juste extraire ce qui est entre guillemets et le reste d'une chaine de caractère, ds un tab par ex...
Comme le .split, il me découpe tout grace aux espaces, mais laisse en bloc le contenu des guillemets de la chaine...
Je suis d'accord que pour récupérer ce qu'il y a entre les guillemets, l'utilisation d'une expression régulière est bonne. Toutefois, tu veux apparemment aussi séparer les autres éléments qui sont hors des guillemets et là le plus simple c'est le Tokenizer.
edit : ben perso, je vois pas comment d'un seul coup, ie avec une seule méthode tu vas pouvoir : extraire ce qu'il y a entre guillemets et en même temps trier la chaîne de caratère.
Donc mieux vaut découper le travail. Expression régulière pour les mots entre guillements et utiliser le Tokenizer pour séparer les mots de ta chaîne de caratères.
oui je vois, maintenant faut ke je vois comment utiliser les deux, et pour l'expression régulière, comment la décrire... (le regex)
comment on peut ecrire un regex qui prends tout ce qu'il y a entre quillemets ?
Moi j'ai fait "\"\\w*|\\d*|\\s*\"" mais ca marche mal
Salut,
split() n'est pas forcément la meilleure solution, car elle se contente de découper selon un séparateur.
Or ici tu recherches plutôt des termes, représenté soit par une chaine entre guillement (\".*?\"), soit par n'importe quel suite de caractères autre qu'un caractère blanc ([^\\s]+).
Le plus simple est d'utiliser Pattern/Matcher pour récupérer ces termes un à un :
a++Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static List<String> split(String s) { ArrayList<String> results = new ArrayList<String>(); Pattern p = Pattern.compile("(\".*?\")|([^\\s]+)"); Matcher m = p.matcher(s); while (m.find()) { results.add(m.group()); } results.trimToSize(); return results; }
merci :)