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 :

concaténation de chaîne impossible!


Sujet :

VB.NET

  1. #1
    Candidat au Club
    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 : 4
    Points
    4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    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
    Candidat au Club
    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 : 4
    Points
    4
    Par défaut
    Code : 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
    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 éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    ton modèle m'interroge, il correspond à une chaine telle que celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        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
    Candidat au Club
    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 : 4
    Points
    4
    Par défaut
    Ça fonctionne!
    Il faudrait libérer m2?? pourtant même en stockant dans des variable ça passait pas...



    Code : 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
                            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
    Candidat au Club
    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 : 4
    Points
    4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
        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 éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
       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
    Candidat au Club
    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 : 4
    Points
    4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
       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.

Discussions similaires

  1. Concaténation de chaînes de caractères
    Par Sakapatate dans le forum Débuter
    Réponses: 15
    Dernier message: 16/06/2007, 22h19
  2. Concaténation de chaîne de caractères
    Par Ardely dans le forum Delphi
    Réponses: 6
    Dernier message: 31/01/2007, 19h10
  3. Comment concaténer des chaînes issues d'un fichier ini ?
    Par Neit_Sabes dans le forum Framework .NET
    Réponses: 10
    Dernier message: 27/09/2006, 09h28
  4. concaténation de chaîne de caractère
    Par jh0483 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/08/2005, 17h10
  5. [XSLT 1.0] Concaténation de chaînes
    Par tofita_49 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/07/2005, 18h34

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