Rechercher : dans
Par :

[Java] (regex?) extraire une sous chaîne

Dernière réponse le 1 avr 2009 à 19:38:26 bizu53, le 29 mar 2009 à 14:58:06 
 Signaler ce message aux modérateurs

Bonjour,

Je voudrais extraire une sous-chaîne se situant entre 2 balises.
J'ai un String comme : "<name>toto</name>" et je voudrais en extraire "toto".
Je suis sûr que c'est bidon mais c'est pas mon truc les expressions régulières en Java.

Merci d'avance à celui (ou celle) qui saura me dire comment faire ça :)

Configuration: Windows XP
Firefox 3.2

Meilleures réponses pour « [Java] (regex?) extraire une sous chaîne » dans :
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la...
Sed - Introduction à SED - Part III VoirSED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...

1

mkb, le 29 mar 2009 à 15:44:27

Salut,
par exemple si vous avez la chaine : chaine1="<name>toto</name>";
vous pouvez extraire la sous-chaine "toto" par la fonction subString(indice début,indice fin)
donc vous faites comme ça:
String sous-chaine=subString(6,10);

nb :6 est l'indice début de sous chaine "toto" dans la chaine1
10 est l'indice fin de sous chaine "toto" dans la chaine1

Répondre à mkb

2

bizu53, le 29 mar 2009 à 15:56:57

C'est comme ça que j'ai fait en attendant une réponse.
Mais toto varie à chaque fois, alors ça me fait compter mettre la longueur de <name>, et retirer la longueur de </name> à la longueur de la String... c'est pas très joli joli. Ce n'est pas faisable avec une regex ?

Je crois que je vais m'en contenter alors merci quand même

Répondre à bizu53

3

danimo, le 31 mar 2009 à 18:04:29

Salut,

chaine1="<name>toto</name>";

Puisqu'on a toujours <name> et </name>";
C'est possible avec indexOf (pour le début) et lastIndexOF (pour la fin):

int index1 = chaine1.indexOf(">"); nous donne l'emplacement du premier ">" et
int index2 = chaine1.lastIndexOf("<"); nous donne l'emplacement du dernier "<"


String x = chaine1.substring(chaine1.indexOf">")+1, chaine1.lastIndexOf("<"));
System.out.println("x = " + x);

Une exception StringIndexOutOfBoundsException
sera levée si les balises sont incorrectes.

Cordialement,

Dan

Répondre à danimo

4

bizu53, le 1 avr 2009 à 19:01:00

Ah oui, je n'y avais pas pensé. Merci, je vais mettre mon sujet comme résolu parce que ça me va :)

Répondre à bizu53

5

 fiddy, le 1 avr 2009 à 19:38:26

Salut,
Je te donne la version avec regexp qui pourra te servir à un moment ou un autre :

import java.util.regex.*;

String aParser="<name>toto</name>";
Pattern p=Pattern.compile("<.*>(.*)<.*>");
Matcher m=p.matcher(aParser);
while(m.find()) 
   System.out.println(m.group(1));

Cdlt
Google is your friend

Répondre à fiddy
Collection CommentÇaMarche.net