IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ne prendre qu'une partie d'un String


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut Ne prendre qu'une partie d'un String
    Bonjour,

    J'aimerai prendre une partie d'un string, mais pas la fonction MID ou autre...

    En fait j'aimerai prendre une chaine de caractère jusqu'à un certain caractère.

    Par exemple:

    Chaine A: "azertyuiop;aze"
    Chaine B: "az;zearzrguihsduirg"

    Dans les 2 chaines, je ne veux que ce qu'il y a avant le ";"...

    Je ne sait pas si c'est possible, j'ai un peu cherché sur le net mais bon... je ne trouve rien!

    Merci d'avance

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    La fonction Split http://msdn.microsoft.com/fr-fr/library/b873y76a.aspx

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim A As String = "azertyuiop;aze"
    Dim B As String = "az;zearzrguihsduirg"
     
    ' On divise A à un tableau de chaînes 
    Dim result As String() = A.Split(";")
     
    ' On affiche le premier element du tableau
    Console.WriteLine(result(0))
    Si ça te dit pas, essaye de le faire à l'aide des expressions reguliers.

    Bonne courage.

  3. #3
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,
    Pour faire simple et rapide il y a la méthode SubString, conjointe avec IndexOf
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
            'Variables
            Const chaineA As String = "azertyuiop;aze"
            Const chaineB As String = "azertyuiopaze" ' Chaine sans ;
            Dim longueurA, longueurB As Integer
            Dim resultatA, resultatB As String
            'Récupération de la position du ; dans la chaine (-1 si non trouvé)
            longueurA = chaineA.IndexOf(";"c)
            longueurB = chaineB.IndexOf(";"c)
            'Test de vérification
            If longueurA = -1 Then
                resultatA = chaineA
            Else
                resultatA = chaineA.Substring(0, longueurA)
            End If
            If longueurB = -1 Then
                resultatB = chaineB
            Else
                resultatB = chaineB.Substring(0, longueurB)
            End If
            'Affichage
            MessageBox.Show(resultatA & vbCrLf & resultatB)
    Les méthodes d'extension fournies par Linq pourraient être utiles:
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            'Variables
            Const chaineA As String = "azertyuiop;aze"
            Const chaineB As String = "azertyuiopaze" ' Chaine sans ;
            Dim tempA, tempB As IEnumerable(Of Char)
            Dim resultatA, resultatB As String
            'Selection à l'aide de Linq et d'une fonction Lambda
            tempA = chaineA.TakeWhile(Function(c As Char) c.CompareTo(";"c) <> 0)
            tempB = chaineB.TakeWhile(Function(c As Char) c.CompareTo(";"c) <> 0)
            'Conversion pour affichage
            resultatA = Convert.ToString(tempA.ToArray())
            resultatB = Convert.ToString(tempB.ToArray())
            'Affichage
            MessageBox.Show(resultatA & "-" & resultatB)

    En espérant avoir été utile!

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut
    Merci a vous deux.

    Je n'ai pas testé ton code Sehnsucht, car le code de Redouane m'a l'ai beaucoup plus optimisé et ça marche

    Merci pour l'aide

  5. #5
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Citation Envoyé par majo59 Voir le message
    Merci a vous deux.

    Je n'ai pas testé ton code Sehnsucht, car le code de Redouane m'a l'ai beaucoup plus optimisé et ça marche

    Merci pour l'aide
    Pas de souci, mais si tu lis bien le lien fourni par Redouane
    Considérations sur les performances

    Les méthodes Split allouent de la mémoire pour l'objet tableau retourné et un objet String pour chaque élément du tableau. Si votre application requiert des performances optimales ou si la gestion de l'allocation de mémoire est critique dans votre application, envisagez d'utiliser la méthode IndexOf ou IndexOfAny, et éventuellement la méthode Compare, pour localiser une sous-chaîne dans une chaîne.
    Après c'est vrai que ça ralentis pas à mort non plus, au moins tu as plusieurs options comme ça

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut
    merci pour l'info.

    javais lu en diagonale :p

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'une partie d'un string
    Par manu11 dans le forum Langage
    Réponses: 5
    Dernier message: 16/06/2011, 13h03
  2. Insérer une partie d'un string dans un int ou float
    Par SamusPlusPlus dans le forum Débuter
    Réponses: 4
    Dernier message: 11/04/2009, 10h26
  3. pb récupération d'une partie d'un String
    Par yakup.67 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 21/04/2008, 21h03
  4. Extraire une partie d'un string
    Par Bloodscalp dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2006, 10h43
  5. comment copier une partie d'un String?
    Par barucca dans le forum Delphi
    Réponses: 8
    Dernier message: 28/06/2006, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo