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 :

Reperer la position d'un mot qui se répète dans une chaine


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut Reperer la position d'un mot qui se répète dans une chaine
    Bonjour à tous, je travail sur Visual Studio (VB 2008) et je souhaite modifier une chaine de caractere, je m'explique:

    J'ai une chaine de caractere qui contient X fois le mot "total", à coté de ça j'ai un tableau de X lignes, qui contient une chaine de caractère par ligne.

    Je souhaite modifier ma chaine de la maniere suivante :

    Je souhaite remplacer la 1ere occurence de "total" par
    "total" & tableau (0)
    la 2eme occurence par :
    "total" & tableau (1) etc ....

    Mon problème est que je n'arrive pas à reperer la position de chaque "total" dans ma chaine de caractère, je n'arrive qu'a reperer le 1er et le dernier total grâce à : IndexOf et lastIndexOf ...

    Pourriez vous m'aider svp?

    Je voudrais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i=0 to tableau.lenght
    écrire dans fichier à l'index du ieme total : "total" & tableau(i)
    next i

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 196
    Par défaut
    euh tu peux donner un exemple de ce que tu as au debut et ce que tu veux obtenir?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    admettons que j'ai ce fichier :

    total 0
    hey salut !
    total 1255
    yo
    total 45
    re salut
    .....
    ....

    Et que j'ai un tableau :
    tab(0)="test0"
    tab(1)="test1"
    tab(2)="test2"
    tab(3)="test3"
    tab(4)="test4"
    ...

    Je veux obtenir :
    test0
    total 0
    hey salut !
    test1
    total 1255
    yo
    test2
    total 45
    re salut
    .....
    ....
    je veux inserer le contenu du la Xeme case au dessus du Xeme total

  4. #4
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,

    Peut être comme ça:
    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
    25
            Dim originalLignes As New List(Of String)
            originalLignes.Add("total 0")
            originalLignes.Add("hey salut !")
            originalLignes.Add("total 1255")
            originalLignes.Add("yo")
            originalLignes.Add("total 45")
            originalLignes.Add("re salut")
     
            Dim tests As New List(Of String)
            tests.Add("test0")
            tests.Add("test1")
            tests.Add("test2")
            tests.Add("test3")
            tests.Add("test4")
     
            Dim modifiedLignes As New List(Of String)
     
            Dim i = 0
            For Each ligne In originalLignes
                If ligne.Contains("total") Then
                    modifiedLignes.Add(tests(i))
                    i += 1
                End If
                modifiedLignes.Add(ligne)
            Next

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 196
    Par défaut
    1) je lis toutes les lignes de mon fichier ReadAllLines()

    2)une petite boucle sur mon fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim max As Integer
    If tab.Count<allLine.Count/2 Then 
        max =tab
    Else 
         max = allLine.Count/2 
    End If
    For i =0  to max -1
            Console.WriteLine(tab(i))
            Console.WriteLine(allLine(i*2)
            Console.WrileLine(allLine((i*2)+1)
        End if
    Next
    La solution de N4w4k a l'avantage de géré si il y a plus d'une ligne de résultat

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 8
    Par défaut
    je vous remercie pour vos réponses, mais en fait c'est un peu plus compliqué que ça, je vous explique, mon application devra lire un fichier tous les jours et le completer en ajoutant des commentaires au dessus des "total", le contenu est variable. Voici un prototype de fichier :

    total un nombre
    du texte (nombre de ligne variable)
    total un nombre
    du texte (nombre de ligne variable)
    total un nombre
    du texte (nombre de ligne variable)
    total un nombre
    du texte (nombre de ligne variable)
    total un nombre
    du texte (nombre de ligne variable)
    total un nombre
    du texte (nombre de ligne variable)
    ....

    C'est pour celà que je ne peux rien coder en dur. Voici comment j'ai procédé jusque maintenant:

    je lis mon fichier avec readallLine()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileReader = My.Computer.FileSystem.ReadAllText(fichier_log)
    J'ai mon tableau "tabComments" qui contient X lignes (1 ligne par total) qui a été importé depuis un autre fichier, et chaque ligne doit se mettre au dessus du total correspondant.

    Je voudrais remplir un 2eme tableau de X ligne qui contiendra dans chaque case la position en integer du "total" associé.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    indexDuPremierTotal= fileReader.IndexOf("total")
    tabComments(0) = indexDuPremierTotal
    Vous comprenez mieux?

  7. #7
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Citation Envoyé par Hanooman Voir le message
    C'est pour celà que je ne peux rien coder en dur.
    Si c'est le fait que je rempli mon tableau en dur qui te gêne, c'est parce que j'avais la flemme de créer un fichier puis d'en extraire les lignes pour tester la solution.. Je suis parti du principe que tu n'avais pas de problème pour extraire les lignes de ton fichier.

    Sinon essaie avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Dim originalLignes As String()
            Using sr As New IO.StreamReader(filename1)
                originalLignes = sr.ReadToEnd.Split(vbCrLf)
            End Using
     
            Dim tests As String()
            Using sr As New IO.StreamReader(filename2)
                tests = sr.ReadToEnd.Split(vbCrLf)
            End Using
     
            'utilisation identique de originalLignes que dans mon précédent message

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

Discussions similaires

  1. Background qui se répète dans une div et son contenu
    Par LeHudiaa dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 02/07/2009, 13h08
  2. Ligne qui se répète dans une table
    Par anywhere dans le forum PL/SQL
    Réponses: 1
    Dernier message: 19/09/2008, 16h16
  3. Afficher un mot qui se trouve dans une phrase.
    Par XpFive dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/08/2008, 19h47
  4. Réponses: 8
    Dernier message: 16/05/2008, 10h34
  5. Réponses: 10
    Dernier message: 22/05/2004, 13h51

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