Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 8
    Points : 0
    Points
    0

    Par défaut concaténation de chaîne impossible!

    Bonjour à tous,

    J'essaie de concaténer des chaines de caractères, j'ai essayé avec + avec & avec stringbuilder, toujours le même soucis...

    Fonctionne:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim m2 As Match = Regex.Match(line, ".*day=""(.*)"" hour=""(.*)"" minute=""(.*)"" month=""(.*)"" second=""(.*)"" year=""(.*)"".*", RegexOptions.IgnoreCase)
     
                                Dim Day As New StringBuilder
                                Day.Append(m2.Groups(1).Value.ToString)
                                'Day.Append("/")
                                Day.Append(m2.Groups(4).Value.ToString)
                                'Day.Append("/")
                                Day.Append(m2.Groups(6).Value.ToString)
     
                                Time = Day.ToString
                                Label2.Text = Time   'donne bien 12122012 par exemple
    Fonctionne pas:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                                Dim m2 As Match = Regex.Match(line, ".*day=""(.*)"" hour=""(.*)"" minute=""(.*)"" month=""(.*)"" second=""(.*)"" year=""(.*)"".*", RegexOptions.IgnoreCase)
     
                                Dim Day As New StringBuilder
                                Day.Append(m2.Groups(1).Value.ToString)
                                Day.Append("/")
                                Day.Append(m2.Groups(4).Value.ToString)
                                Day.Append("/")
                                Day.Append(m2.Groups(6).Value.ToString)
     
                                Time = Day.ToString
                                Label2.Text = Time   'donne //
    Fonctionne pas: (essai en code ASCII)...
    Code :
    1
    2
     
    Time = String.Concat(m2.Groups(1).Value.ToString, Chr(47), m2.Groups(4).Value.ToString, Chr(47), m2.Groups(6).Value.ToString)
    Je désespère... rien de spécial dans mes string, je précise qu'en prenant que le premier groups de m2 et en ajoutant n'importe quel caractère le résultat est le même (uniquement le caractère ajouté apparaît)...

    Fonctionne pas: (essai en code ASCII)...
    Code :
    1
    2
    3
    4
    5
    6
     
    Time = (m2.Groups(1).Value.ToString + Chr(47))
    'ou
    Time = (m2.Groups(1).Value.ToString & "/")
     
    'donne toujours que /

  2. #2
    Membre Expert Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 576
    Points : 1 066
    Points
    1 066

    Par défaut

    Le fait qu un stringbuilder soit mutable devrait t inciter a stocker tes resultats au fur et a mesure dans des variables de type string et ainsi tu pourrais les concatener plus tard.

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 8
    Points : 0
    Points
    0

    Par défaut

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
                        While objreader2.Peek() >= 1
                            line = objreader2.ReadLine()
                            Dim m2 As Match = Regex.Match(line, ".*day=""(.*)"" hour=""(.*)"" minute=""(.*)"" month=""(.*)"" second=""(.*)"" year=""(.*)"".*", RegexOptions.IgnoreCase)
     
                            Dim day As String = m2.Groups(1).Value.ToString
                            Dim month As String = m2.Groups(4).Value.ToString
                            Dim year As String = m2.Groups(6).Value.ToString
                            Dim seperate As String = "/"
     
                            Dim Time As String = String.Concat(day, seperate, month, seperate, year) 'donne toujours //
    'ou
                            Dim Time As String = day & seperate & month & seperate & year 'donne toujours //
    'ou
                            Dim Time As String = day + seperate + month + seperate + year 'donne toujours //
    'ou
                            Dim Time As New StringBuilder
                            Time.Append(day)
                            Time.Append(seperate)
                            Time.Append(month)
                            Time.Append(seperate)
                            Time.Append(year)
     
                               'donne toujours //
    Je penses / supposes qu'il s'agit d'un problème d'encodage mais je n'arrive pas à comprendre la subtilité de la chose... Avec un autre fichier texte enregistré avec le notepad j'ai le même soucis...

    Edit: Que ce soit en UTF-8 / ANSI / unicode, même résultat, donc la vérité est ailleurs...

  4. #4
    Membre émérite
    Inscrit en
    octobre 2006
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 635
    Points : 971
    Points
    971

    Par défaut

    Bonsoir,
    ton modèle m'interroge, il correspond à une chaine telle que celle ci :
    Code :
        Dim line As String = "Intervention : day=""15"" hour=""22"" minute=""35"" month=""01"" second=""18"" year=""2013"" is over."
    Avec ce genre de lignes, toutes tes solutions de présentation fonctionnent.
    Mais je doute qu'elles se présentent sous cette forme?

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 8
    Points : 0
    Points
    0

    Par défaut

    Ça fonctionne!
    Il faudrait libérer m2?? pourtant même en stockant dans des variable ça passait pas...



    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
                            line = objreader2.ReadLine()
                            Dim m2 As Match = Regex.Match(line, "<time day=""(.*)"" hour=""(.*)"" minute=""(.*)"" month=""(.*)"" second=""(.*)"" year=""(.*)""/>", RegexOptions.IgnoreCase)
     
                            Dim day As String = m2.Groups(1).Value.ToString
                            Dim month As String = m2.Groups(4).Value.ToString
                            Dim year As String = m2.Groups(6).Value.ToString
                            Dim seperate As String = "/"
     
                            m2 = Regex.Match(line, "autrepattern""(.*)""oO", RegexOptions.IgnoreCase)
                            ID = m2.Groups(1).Value
     
     
                            Dim Time As String = day
     
                            If Time <> "" Then 'était la avant déjà... je l'enlevait pour clarifier...
                                TimeLbl.Text = day + "/" + month + "/" + year
                            End If

  6. #6
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 8
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par chrismonoye Voir le message
    Bonsoir,
    ton modèle m'interroge, il correspond à une chaine telle que celle ci :
    Code :
        Dim line As String = "Intervention : day=""15"" hour=""22"" minute=""35"" month=""01"" second=""18"" year=""2013"" is over."
    Avec ce genre de lignes, toutes tes solutions de présentation fonctionnent.
    Mais je doute qu'elles se présentent sous cette forme?
    Si si exactement sous cette forme...
    Edit euh non en fait sous cette forme:
    time day="8" hour="17" minute="10" month="1" second="15" year="2013"

    les doubles " sont des caractère d’échappement...

  7. #7
    Membre émérite
    Inscrit en
    octobre 2006
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 635
    Points : 971
    Points
    971

    Par défaut

    Oui, c'est bien la même forme.
    Tes guillemets sont ils droits (anglais informatiques) ou anglais entrant-ouvrants ou autres peut être ?
    A tester ce modèle qui cherchera un signe de ponctuation généraliste en lieu et place du guillemet :
    Code :
       Dim m2 As Match = Regex.Match(line, ".*day=\p{P}(.*)\p{P} hour=\p{P}(.*)\p{P} minute=\p{P}(.*)\p{P} month=\p{P}(.*)\p{P} second=\p{P}(.*)\p{P} year=\p{P}(.*)\p{P}.*", RegexOptions.IgnoreCase)

  8. #8
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 8
    Points : 0
    Points
    0

    Par défaut

    oui... le modèle ci dessous aurait aussi fonctionné, mais le problème n'était pas là, voir le tout premier exemple que je donne, les données sont bien extraites et récupérées, mon pattern regex à donc toujours été bon...

    Je n'ai toujours pas compris ce qui clochait, mais bon ça fonctionne... (voir mes dernières réponses)...

    Code :
       Dim m2 As Match = Regex.Match(line, ".*day=\p{P}(.*)\p{P} hour=.(.*). minute=.(.*). month=.(.*). second=.(.*). year=.(.*)..*", RegexOptions.IgnoreCase)
    En tout cas merci pour l'aide.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •