Modification de chaîne de caractères

cs_maya77 Messages postés 36 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 18 juin 2011 - 11 mai 2011 à 12:20
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 11 mai 2011 à 16:48
Bonjour tous le monde
Après de multiple tentatives je n'arrive toujours pas à régler mon problème, je vous explique j'ai une chaîne de caractères de ce type:

INPUT STRING: commune
* SOLUTION 1: (AlwilAyAtu) [wilAyap_1] Al/DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM

je voudrais modifier cette chaîne pour avoir:

commune/DET+NOUN+NSUFF_FEM_PL+CASE_DEF_NOM


merci de m'aider

7 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2011 à 12:54
Bonjour,

Je pense qu'en split sur le caractère "/" puis pour chaque élément split sur le caractère "+" tu devrais t'en sortir.

Mon site
0
cs_maya77 Messages postés 36 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 18 juin 2011
11 mai 2011 à 14:58
salut

pour garder le coté droit de chaque ligne (c-à-d) après les ':' j'ai fait cela mais ça ne marche pas voici le code

 
Dim myfile As New StreamReader(Path, Encoding.UTF8)

        Dim cnt As String = myfile.ReadLine
        Dim cnt1 As String
        While Not (cnt Is Nothing)
            'cnt.Split(":")
            Dim Decoupe As Integer = InStr(cnt, ":")
            cnt1 = cnt.Substring(Decoupe, cnt.Length)
            cnt1 &= (cnt1 + _
                            Convert.ToChar(13)                 + _
                         
+ _
                            Convert.ToChar(10))
cnt = myfile.ReadLine
        End While

        myfile.Close()


je ne sais pas ce qui cloche

j'utilise vb 2010 express
merci de m'aider
0
cs_maya77 Messages postés 36 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 18 juin 2011
11 mai 2011 à 16:15
j'ai encore tenté de le modifier pour passer de:

INPUT STRING: commune
* SOLUTION 1: (AlwilAyAtu) [wilAyap_1] Al/DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM

à:

commune
Al/DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM

avec ce code:

Dim myfile As New StreamReader(Path, Encoding.UTF8)

Dim cnt As String = myfile.ReadLine
Dim cnt1 As String




Dim listmodifi As New List(Of String)
While Not (cnt Is Nothing)

Dim empl As Long = InStr(cnt, "/")

If cnt1.Contains("/")Then
cnt1 &= (Mid$(cnt, empl) + _
Convert.ToChar(13) + _
Convert.ToChar(10))
Else
cnt1 &= (Mid$(cnt, 15) + _
Convert.ToChar(13) + _
Convert.ToChar(10))
End If
cnt = myfile.ReadLine
End While

myfile.Close()

Dim path1 As String
path1 = "C:\\test3.txt"
Dim sw As New StreamWriter(path1)
sw.Write(cnt1)
sw.Close()


mais j'ai cette erreur:
La référence d'objet n'est pas définie à une instance d'un objet.
au niveau de:
If cnt1.Contains("/")Then

@NHenry une idée???
merci d'avance.
0
cs_maya77 Messages postés 36 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 18 juin 2011
11 mai 2011 à 16:25
hihihih je me suis tromper il fallait écrire:
If cnt.Contains("/")Then
ou lieu
If cnt1.Contains("/")Then

cnt1 ne contient rien. donc cela marche!!!

voila merci quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
11 mai 2011 à 16:26
Dans l'immédiate je te propose cela

i=mid("commune * SOLUTION 1: (AlwilAyAtu) [wilAyap_1] Al/DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM ",instr(1,"commune * SOLUTION 1: (AlwilAyAtu) [wilAyap_1] Al/DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM ","/")+1)

i = replace("DET+wilAy/NOUN+At/NSUFF_FEM_PL+u/CASE_DEF_NOM ","/","",vbtextcompare)

i = "commune/" & i


A la fin des trois ligne i vaudra exactement la valeur de ton exemple. Si tu peux garantir que les autres chaine en la même structure c trois lignes fonctionnerons tjs. Si non il faut que tu cherche les points commun a tout t ligne pour faire la bonne routine.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 mai 2011 à 16:46
Bonjour,

maya77 à la place de :
Convert.ToChar(13) + Convert.ToChar(10)
Utilises :
Environment.NewLine

4u4me4us, ton code est en VB6, ici on est en .NET.

Mon site
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
11 mai 2011 à 16:48
Toutes mes excuse

Sans rancune ok ! suis un gentils
0
Rejoignez-nous