Cahine de caractère entre 2 autres

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 19 nov. 2008 à 13:15
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 19 nov. 2008 à 21:38
Bonjour,

Une question dont les réponse est sûrement toute bête:

Comment puis-je extraire une chaine de caractère comprise entre deux autres ?
Ex:

On a la chaine:
HREF="bonjour.txt"

Je souhaiterais retourner: "bonjour.txt"

Bien sur il ne s'agit pas de faire un split sur guillemet puisque la chaine de caractère peut-être bien plus longue que dans cet exemple.

Merci par avance,
Cordialement,
Anz.

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 nov. 2008 à 13:42
Bonjour,
Avec la méthode SubString de la class String ou avec des Regex...

<hr />
-Blog-
-WebSite-
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 nov. 2008 à 13:43
hmm substring n'est pas uniquement pour extraire en fonction de position ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 nov. 2008 à 13:54
Tu peux trouver la position avec IndexOf, mais si tu as des grandes chaînes et que tu as des conditions pas forcément triviale, je te conseille de regarder du côté des Regex... ça sera plus simple et accessoirement peut-être même plus rapide.

<hr />
-Blog-
-WebSite-
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 nov. 2008 à 14:34
Merci à toi,
J'ai commencé à faire des test avec les regex mais tout ne fonctionne pas comme prévu..:

voici un extrait du fichier en lecture:

<]");
               
                string line;
                while ((line = rd.ReadLine()) != null)
                {
                    string[] tab = rx.Split(line);
                    listone.Items.Add(tab[0]);
                }

Mais je ne récpère que des chaines vides..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 nov. 2008 à 14:55
Essayes ceci:

public
static
void Main(
string[] args)
{

  
string strContents =
@"[ ;
  
Regex regex =
new
Regex(
"(H|h)(R|r)(E|e)(F|f)\\s*=\\s*(?:(?:\\"(?[^\\"]*)\\")|(?[^\\s]* ))");
  
MatchCollection mc = regex.Matches(strContents);

  
foreach (
Match m
in mc)
   {
     
Console.WriteLine(
"URL: {0}", m.Groups[
"url"]);
   }
}

<hr />
-]Blog-
-WebSite-
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 nov. 2008 à 18:09
Merci à toi,

J'ai essayé ton expression, alors ça marche a peu près mais je n'obtiens pas exactement ce que je veux obtenir...
Peut-être pourrais-tu m'expliquer le fonctionnement de ton regex ?

Je ne comprend pas pourquoi tant de caractères.. ^^ j'avais cru comprendre que [<] signifiait à lui tout seul "chaine entre "<"....
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 nov. 2008 à 21:38
Les regex c'est presque un langage à part entière et je ne pourrais pas te l'expliquer dans un message sur le forum...
Le plus simple est de lire des tutos et de s'entraîner!

Pourquoi ce n'est pas ce que tu veux obtenir? Qu'est ce qui joue pas dans cette Regex?

<hr />
-Blog-
-WebSite-
0
Rejoignez-nous