remplacement d'une chaine de caractére par un entier
bonjour tout le monde
voila mon problème, j'ai un fichier de la sorte:
Citation:
+1 NOUN_PROP NOUN_PROP
-1 PUNC DET+NOUN+NSUFF_FEM_PL+CASE_DEF_NOM DET+ADJ+NSUFF_FEM_SG+CASE_DEF_NOM PUNC NUM PUNC ABBREV ABBREV PUNC
+1 PUNC NOUN+CASE_DEF_NOM NOUN+CASE_INDEF_GEN PV+PVSUFF_SUBJ:3MS PREP NOUN+NSUFF_FEM_SG+CASE_DEF_GEN
-1 DET+ADJ+CASE_DEF_GEN
..........
..........
et un autre fichier qui contient tout les tag (étiquéte) qui puissent aparaitre dans le premier fichier
Citation:
ABBREV
ADJ+CASE_DEF_GEN
ADJ+CASE_INDEF_ACC
ADJ+CASE_INDEF_GEN
ADJ+CASE_INDEF_NOM
ADJ+NSUFF_FEM_SG+CASE_INDEF_ACC
ADV
ADV+CASE_DEF_ACC
CONJ
DET+ADJ+NSUFF_FEM_SG+CASE_DEF_A
DET+ADJ+NSUFF_FEM_SG+CASE_DEF_GEN
DET+ADJ+NSUFF_FEM_SG+CASE_DEF_NOM
DET+ADJ+NSUFF_MASC_PL_GEN
DET+NOUN+CASE_DEF_ACC
Je voudrai remplacer chaque occurrence du premier fichier par la position de cette même occurrence dans le deuxième fichier,
par exemple un 0 à la place de ABBREV
Voici mon code mais il ne me remplace que les ABBREV donc la première possibilité
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Dim tags As String = sr3.ReadToEnd
Dim tabTag() As String = tags.Split(vbCrLf)
Dim vecteur As String = sr4.ReadToEnd
vecteur = vecteur.Replace(vbCrLf, Chr(32))
Dim TabVect() As String = vecteur.Split(" ")
For j As Integer = 0 To UBound(tabTag)
For k As Integer = 0 To UBound(TabVect)
If TabVect(k) <> "+1" And TabVect (k) <> "-1" Then
If TabVect (k) = tabTag (j) Then
TabVect(k) = CStr (j)
End If
End If
Next k
Next j |
merci pour votre aide
remplacer une chaine par son index dans une liste
bonjour
Veuillez faire attention à la saisie des fichiers texte sans quoi vous trouverez n'importe quoi dans le resultat,si le fichier texte est "scratche".
Terminer les lignes par un "cr".
Terminer la fin de fichier par un "suppr" ou ctrl-z(caractere de fin fichier).
voici ton code corrige d'une ereur de logique .
Il est conseille de convertir à la volee les tableax de string en list(of string)parce c'est gratuit et ca facilite le recherche de chaine(fonction contains) au lieu de faire des boucles.
code....
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
'VEUILLEZ FAIRE ATTENTION À LA SAISIE DES FICHIERS TEXTE
'Valider chaque ligne avec touche "suppr" et touche "retour chariot"(cr)
'Sans quoi il y aura des caracteres tabulation ou des caracterres null string("")
'qui fausseront le resultat de la fonction Split
'Fin de fichier :appuyer sur touche "suppr" apres le dernier caractere de la dernier ligne
'pour marquer fin de fichier.
'NB:RAJOUTER 3 TEXTBOX SVP
Imports System.IO
Imports System.Text
Public Class Form1
Dim cheminFichier As String = Directory.GetCurrentDirectory & "\"
Dim fileTag As String = "Tags.txt"
Dim fileTexte As String = "Fichier.txt"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim tags As String = String.Empty
Dim TabTag() As String = New String() {}
Dim vecteur As String = String.Empty
Dim TabVect() As String = New String() {}
Using srFileTag As StreamReader = New StreamReader(cheminFichier & fileTag, True)
tags = srFileTag.ReadToEnd
TabTag = tags.Split(New Char() {" ", vbCrLf, vbTab})
srFileTag.Close()
End Using
Using srFileText As StreamReader = New StreamReader(cheminFichier & fileTexte, True)
vecteur = srFileText.ReadToEnd
TabVect = vecteur.Split(New Char() {" ", vbCrLf, vbTab})
srFileText.Close()
End Using
'Affiche les fichiers lus
Call displayFiles(TabTag, Me.txtBoxFileTag)
Call displayFiles(TabVect, Me.txtBoxFileVecteur)
'tabVectTemp est un tableau clone de TabVect(stocke les resultats)
'Car il est interdit dans une boucle recherche de modifier TabVec
Dim tabVectTemp() = TabVect
'SVP: Erreur de logique .Permuter les tableaux TabVect et TabTag
'On "prend" un element de TabTag et on recherche à chaque fois
'dans TabVec s'il y a un element correspond
For J As Integer = 0 To UBound(TabTag)
'check si un element de TabVec se trouve dans
For K As Integer = 0 To UBound(TabVect)
If TabVect(K) <> "+1" And TabVect(K) <> "-1" Then
If TabVect(K) = TabTag(J) Then
tabVectTemp(K) = CStr(J)
End If
End If
Next K
Next J
'VARIANTE AVEC CONVERSION DE TabTag EN LIST(OF STRING)
'a la volee
'Dim lstTag As List(Of String) = TabTag.ToList
'For J As Integer = 0 To TabVect.Length - 1
' Dim ch As String = TabVect(J)
' If lstTag.Contains(ch) Then
' tabVectTemp(J) = lstTag.IndexOf(ch).ToString
' End If
'Next
'Affiche le fichier final contenu dans tabVectTemp
Call displayFiles(tabVectTemp, Me.txtBoxFileReplacement)
End Sub
Private Sub displayFiles(ByVal objTabStr() As String, ByVal ctrl As TextBox)
ctrl.Clear()
For I As Integer = 0 To objTabStr.Length - 1
ctrl.Text = ctrl.Text & (I).ToString & " :" & objTabStr(I) & vbCrLf
Next
End Sub
End Class |
p.j: 01 fichier fich.txt(donnees)
01 fichier Fags.txt(tags)
bon code....