FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» bouton dans autre form que 0
Remplacer une sous-chaîne de caractères par une autre Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
Remplacer une sous-chaîne de caractères par une autre Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
Remplacer une sous-chaîne de caractères par une autre Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
Remplacer une sous-chaîne de caractères par une autre Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Remplacer une sous-chaîne de caractères par une autre Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Remplacer une sous-chaîne de caractères par une autre Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Remplacer une sous-chaîne de caractères par une autre Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Remplacer une sous-chaîne de caractères par une autre Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Remplacer une sous-chaîne de caractères par une autre Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Remplacer une sous-chaîne de caractères par une autre Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Remplacer une sous-chaîne de caractères par une autre Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Remplacer une sous-chaîne de caractères par une autre Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Remplacer une sous-chaîne de caractères par une autre Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Remplacer une sous-chaîne de caractères par une autre Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Remplacer une sous-chaîne de caractères par une autre Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 Remplacer une sous-chaîne de caractères par une autre

Aller en bas 
4 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7002
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 10:55

Panoramic dispose de plusieurs fonctions sur les chaînes de caractères.
Mais comme toujours, il n’y a jamais assez pour subvenir à tous les besoins.
A titre d’exemple : comment remplacer dans une chaîne de caractères, une sous-chaîne par une autre ?
Soit t$ = "Voici un exemple d’utilisation de ma procédure"
Je veux remplacer "exemple" par "test" pour obtenir "Voici un test d’utilisation de ma procédure".

Le code suivant présente une SUB qui réalise cette fonction.
On peut remplacer soit la 1ère occurrence du mot à remplacer soit toutes les occurrences de ce même mot.

L’appel à la SUB se fait comme ceci :
Code:
Remplace(t$,s1$,s2$)
t$ est la chaîne d’origine,
s1$ est la sous chaîne à remplacer
s2$ est la sous-chaîne de remplacement.
Le résultat se trouve dans la variable globale remplace$

Code:

rem ============================================================================
rem                     Remplace.bas par Papydall
rem   Remplacer dans le texte t$, la 1ère occurence (ou toutes les occurences)
rem               de la chaine s1$ par la chaine s2$
rem ============================================================================
dim t$,s1$,s2$,t1$
t$ = "Ceci est un exemple d'utilisation de la SUB Remplace(t$,s1$,s2$): exemple réussi "

s1$ = "exemple"
s2$ = "test"
t1$ = t$
rem ============================================================================
' Exemple d'appel pour remplacer la 1ère occurence de s1$ :
' Remplace(t$,s1$,s2$) : t$ = remplace$
rem ============================================================================
' Exemple d'appel pour remplacer toutes les occurences de s1$
while instr(t$,s1$) > 0 : Remplace(t$,s1$,s2$) : t$ = remplace$ : end_while
rem ============================================================================
 
message "Texte original : " + t1$ + chr$(13) + "On va remplacer " + s1$+" par "+ s2$+chr$(13)+"Texte final : " + t$

end

rem ============================================================================
' Remplacer dans le texte T$, la chaîne S1$ par la chaîne S2$
' Le retour est dans la variable globale REMPLACE$
' Cette procédure (utilisée comme fonction) remplace la 1ère occurence de S1$
' par S2$ dans T$.
' REMARQUE :
' Pour remplacer toutes les occurences de S1$ par S2$ dans T$, l'appel se fera
' comme ceci :
' while instr(t$,s1$) > 0 : Remplace(t$,s1$,s2$) : t$ = remplace$ : end_while
rem ============================================================================
SUB Remplace(t$,s1$,s2$)
    dim_local f$,retour$,g$
    if variable("remplace$") = 0 then DIM remplace$
    f$ = "c:\temp\replace.vbs" : retour$ = "c:\temp\retour.txt" : g$ = chr$(34)
    FILE_OPEN_WRITE 9999, f$
    file_writeln 9999, "Function Replace(string_1,strPattern, strReplaceString)"
    file_writeln 9999, "Set regEx = New RegExp"
    file_writeln 9999, "regEx.Pattern = strPattern"
    file_writeln 9999, "Replace = regEx.Replace(string_1,strReplaceString)"
    file_writeln 9999, "retour = Replace"
    file_writeln 9999, "End Function"
    file_writeln 9999, "Set fso = CreateObject("+g$+"Scripting.FileSystemObject"+g$+")"
    file_writeln 9999, "Set MyFile = fso.CreateTextFile("+g$+retour$+g$+", True)"
    file_writeln 9999, "MyFile.WriteLine(Replace("+g$+t$+g$+","+g$+s1$+g$+","+g$+s2$+g$+"))"
    file_writeln 9999, "MyFile.Close"
    FILE_CLOSE 9999
    EXECUTE_WAIT f$ : FILE_DELETE f$
    file_open_read 9999,retour$ : file_readln 9999,Remplace$
    file_close 9999 : file_delete retour$

END_SUB
rem ============================================================================

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 15:58

bonjour Papydall,  Smile 
Remplacer un chaine par une autre ça déjà du être fait sous panoramic. Je ne sais pas si Nardo avait fait une sub pour cela?
En tout cas, voici ma contribution, une petite sub vite faite:
Spoiler:
Mais ta procédure est valable pour remplacer par exemple tous les mots d'un texte (exemple ==> test).
A +  Wink Wink Wink
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 18:05

Les deux sont bien,
S'il n'y a qu'un seul mot à changer celle de Bignono est bien plus légère.
Mais celle de Papydall, est la plus efficace pour un éditeur de texte.

Bravo!
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7002
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 19:10

Voici  un code qui remplace tout un bloc de texte par un autre bloc dans un fichier texte.

L’appel à la sub se fait comme ceci :
Code:
 remplace_block(source$,destination$,recherche$,remplace$)
en transmettant les 4 paramètres qui ont la signification suivante :
Source$ est le nom complet (nom et chemin) du fichier texte à modifier. Si le chemin est omis, le programme considère qu’il s’agit du répertoire en cours.
Destination$ est le nom complet (nom et chemin)  du fichier texte résultant après modification. Si le chemin est omis, le programme considère qu’il s’agit du répertoire en cours.
Recherche$ est le bloc de texte à modifier.
Remplace$  est le bloc de texte de remplacement.

Si le fichier source est introuvable, un message d'alerte sera affiché et le programme s'arrête.
Si le bloc de texte à modifier n'existe pas dans la source, le fichier destination restera inchangé.

Exemple :
Vous disposez du fichier texte suivant qui est enregistré sur C:\temp\invitation_source.txt
Code:

Chers Panoramiciens et Panoramiciennes

Pour fêter l'arrivée du compilateur Panoramic, l'association Panoramicale a le plaisir de vous inviter à son Panoramic Party, le  
dimanche 02 Février à partir de 16 heurs ( heure Panoramicienne)

A cette occasion, notre cher Jean Claude nous organisera un grand méchoui Panoramicien.
Vous pouvez venir nombreux, vos amis sont les bienvenus.
Une participation de deux SUB bien codées sera demandée.

Vous voulez remplacer toutes les occurrences de Panoramic par langage Panoramic
L’appel se fait ainsi :

Code:
 remplace_block("c:\temp\invitation_source.txt","c:\temp\invitation_destination.txt","Panoramic","langage Panoramic")

Si tout va bien, vous obtenez un fichier c:\temp\invitation_destination.txt que je vous laisse découvrir le contenu.


Avant d'oublier, voici le code en question :

Code:

REM ============================================================================
REM                     replace_block_of_text.bas
'        remplacer n'importe quoi dans un fichier texte, par n'importe quoi
REM ============================================================================
' Exemple d'appel :
remplace_block("c:\temp\invitation_source.txt","c:\temp\invitation_destination.txt","Panoramic","langage Panoramic")


REM ============================================================================

END
REM ============================================================================
' Remplacer un bloc de texte par un autre bloc de texte dans un fichier texte
' Paramètres :
' Source$      : nom du fichier texte à modifier
' Destination$ : nom du fichier texte modifié
' Recherche$   : bloc de texte à remplacer
' Remplace$    : bloc de texte de remplacement
' ==============================================================================
' Si le fichier source n'existe pas, il y aura un message d'alerte et arrêt du script
' Si le bloc de texte à remplacer n'existe pas dans le fichier source,
' le fichier destination sera identique au fichier source
REM ============================================================================
SUB remplace_block(source$,destination$,recherche$,remplace$)
    dim_local f$,g$
    f$ = "c:\temp\replace_block_of_text.vbs"
    g$ = chr$(34)
REM ============================================================================
    FILE_OPEN_WRITE 9999, f$
    file_writeln 9999, "Option Explicit"
    file_writeln 9999, "Dim oFSO"
    file_writeln 9999, "Set oFSO = CreateObject(" + g$ + "Scripting.FileSystemObject" + g$ + ")"
    file_writeln 9999, "if oFSO.FileExists("+g$+source$+g$+") then"
    file_writeln 9999, "Main"
    file_writeln 9999, "Else"
    file_writeln 9999, "MsgBox " +g$+"Le fichier "  + source$  +" n'existe pas."+g$+",48"+","+g$+"!!! ERREUR !!!" +g$
    file_writeln 9999, "wscript.quit"
    file_writeln 9999, "end if"
REM ============================================================================
    file_writeln 9999, "Sub Main"
    file_writeln 9999, "Dim f, sSourceFile, sDestFile, sSearch, sReplace, sText1, sText2"
    file_writeln 9999, "sSourceFile = " + g$ + source$ + g$
    file_writeln 9999, "sDestFile = " + g$ + destination$ + g$
    file_writeln 9999, "sSearch =  " + g$ + recherche$ + g$
    file_writeln 9999, "sReplace = " + g$ + remplace$ + g$
    file_writeln 9999, "Set f = oFSO.OpenTextFile(sSourceFile)"
    file_writeln 9999, "sText1 = FileReadAll(sSourceFile)"
    file_writeln 9999, "sText2 = Replace(sText1, sSearch, sReplace)"
    file_writeln 9999, "SaveToFile sText2, sDestFile"
    file_writeln 9999, "Wscript.Echo _"
    file_writeln 9999,  g$ + "Texte avant : " + g$ + " & Len(sText1) & " + g$ + " caractères, " + g$ + " & _ "
    file_writeln 9999,  g$+g$ + "texte après : " + g$ + " & Len(sText2) & " + g$ + " caractères (résultat dans " + g$ + " & sDestFile & " + g$ + ")." + g$ + "
    file_writeln 9999, "End Sub"
REM ============================================================================
   file_writeln 9999, "Function FileReadAll(sFile)"
   file_writeln 9999, "Dim f"
   file_writeln 9999, "Set f = oFSO.OpenTextFile(sFile)"
   file_writeln 9999, "FileReadAll = f.ReadAll"
   file_writeln 9999, "f.Close"
   file_writeln 9999, "End Function"
REM ============================================================================
   file_writeln 9999, "Sub SaveToFile(sText, sFile)"
   file_writeln 9999, "Dim f"
   file_writeln 9999, "Set f = oFSO.CreateTextFile(sFile)"
   file_writeln 9999, "f.Write sText"
   file_writeln 9999, "f.Close"
   file_writeln 9999, "End Sub"
REM ============================================================================
   FILE_CLOSE 9999
   EXECUTE_WAIT f$ : FILE_DELETE f$
END_SUB
REM ============================================================================

PS : Comme contenu du fichier source, ce n'est pas original! Embarassed
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 20:03

Mais si, seulement ça fait un peu juste pour le méchoui chez Jean-Claude demain. Je vais essayer de me libérer..
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 20:57

Question méchoui, je pense que Papydall est très certainement plus connaisseur que moi.

Mais, question couscous, çà se discute.

à propos, pour ceux qui se pointeraient, demain, chez moi, c'est OK, l'entrée est de 10€ (c'est pas cher).
Le repas est de 100€ sans les vins, sans le dessert et sans le café. (Je ne parle pas des digestifs)
Compte tenu du délai plus que bref qui m'est imposé, je suis contrains d'ajouter un supplément pour le billet d'avion de Papydall, et un autre supplément pour le fournisseur local qui devra me fournir un mouton dans l'urgence. Ça ne devrait pas dépasser les 300€ de supplément.
Compte tenu de l'urgence, (qui n'est pas de mon fait), vous devez vous inscrire sur ce poste avant 21h (il est 20h57).

 lol! 
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 21:01

Bon, il est 21h et personne ne s'est inscrit, çà sera pour une autre fois.

 lol!
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7002
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptySam 1 Fév 2014 - 23:13

Bon, bin, merci jean Claude pour l’offre bon marché que tu nous faites  mais s’il y a une proposition meilleur marché j’y adhère, moi !

Hé, à propos, personne n’a commenté ma SUB !  Laughing 
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 8:43

Hello Papydall!  Smile 
J'ai fait une petite sub pour faire la même chose que tu nous proposes! A vous de rajouter les tests d'existence ou non des fichiers source.txt et destination.txt . J'ai essayé avec un fichier texte de plus de 10 Mo, ça fonctionne, mais presque 1 minute pour faire tout le travail.
voilà le fichier source.txt:
Code:
Voici un petit texte d'essai:

Il était une fois un marchand de salades qui essayait de vendre des radis. Un jour, on lui
amena un radis vert. Il s'écria: "Oh! Mon Dieu!, ce n'est pas un radis rouge!"
Depuis ce jour, il ne vend plus que des radis noirs! Fin de l'histoire des radis.
Moralité: Il vaut mieux continuer à vendre des salades que devenir marchand de radis!

et voici mon code:
Spoiler:

Bon, il faut que je continue à vendre mes salades! lol! lol! lol! 
Ça me reviendra moins cher que le méchoui!
A+  Wink Wink Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7002
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 10:05

Bonjour à tous les marchands de salades et à tous les spécialistes du méchoui.   Laughing 

Même si je poste un code assez médiocre ( ! ) , il y a toujours quelqu’un qui en sort des meilleurs !
Donc je gagne à tous les coups.
Merci bignono.
Tes radis qui deviennent des tapis sont meilleurs que mon méchoui ; hé oui ; c’est bien ainsi et j’en suis ravi, alors merci.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 11:07

Je dois admettre que ton usine à gaz, Papydall, s'est trouvée sévèrement simplifiée par Bignono.  Very Happy 

Néanmoins, comme tu le dit, tout le monde y à gagné.

Ça m'a permis de voir que sous W8 il n'y a pas de C:\temp, mais il y a C:\Windows\temp.

A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 11:13

?
Je suis sous W7, mais il me semble que c'est pareil pour tout le monde, il n'y a pas de C:\Temp d'office si on ne l'a pas créé...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7002
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 11:38

Sous XP aussi il y a du c:\Windows\temp et c’est le temp de Windows ; moi je préfère mon temp à moi !
A chacun son temp non ?

Question usine à gaz, Bignono n’a même pas besoin d'un simple étalage.

Remplacer une sous-chaîne de caractères par une autre Images13
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyDim 2 Fév 2014 - 12:03

Autant pour moi, j'ai bêtement cru que ce dossier "temp" existait d'office.

Bon, c'est l'heure d'attaquer la botte de radis !  Very Happy 

A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyLun 3 Fév 2014 - 21:23

@bignono
Tu vas me dire que je cherche la petite bête, mais dans ton exemple essaie de remplacer "radis" par "radis noirs"...
ça boucle...
Je verrais plutôt une sub du genre (tout intégré, et non pas une sub qui en appelle une autre):
Code:
SUB Remplace(b$,c$,source$,destination$)
' remplacer la séquence b$ par c$ dans le fichier source$, résultat dans le fichier destination$
dim_local a$,aa$,k%,u%
file_open_read 1,source$: file_open_write 2,destination$
while file_eof(1) = 0
    file_readln 1,a$
    k% = INSTR(a$, b$)
    WHILE k% > 0
        a$ = LEFT$(a$, k%-1)+c$+MID$(a$,k%+LEN(b$),500)
        u% = k%+LEN(c$): aa$ = MID$(a$, u%, 500)
        k% = INSTR(aa$, b$): IF k% = 0 THEN EXIT_WHILE
        k% = k% + u% -1
    END_WHILE
    file_writeln 2,a$
end_while
file_close 1: file_close 2
end_sub
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyMar 4 Fév 2014 - 8:52

Bonjour JL35,  Smile 
Tu as tout à fait raison de chercher la petite bête! Cela prouve que mon code n'était pas infaillible. Donc, j'ai revu ma copie! Et pour ce faire j'ai créé un nouveau fichier source pour transformer mes "radis" en "radis noir", que voilà:
Code:
Voici un petit texte d'essai:

1 radis + 1 radis + 1 radis + 1 radis + 1 radis = 5 radis.
Et combien font 10 x 5 radis?
Sûrement pas 50 radis! Ni 10 radis + 10 radis + 10 radis + 10 radis + 10 radis!
Cela fait tout simplement une botte de radis!
une fois transformé, cela devient:
Code:
Voici un petit texte d'essai:

1 radis noirs + 1 radis noirs + 1 radis noirs + 1 radis noirs + 1 radis noirs = 5 radis noirs.
Et combien font 10 x 5 radis noirs?
Sûrement pas 50 radis noirs! Ni 10 radis noirs + 10 radis noirs + 10 radis noirs + 10 radis noirs + 10 radis noirs!
Cela fait tout simplement une botte de radis noirs!
Voici mon code source revu et corrigé :
Code:
dim b$,c$
height 0,545

' Substituer les mots "radis noirs" au mot "radis"!
b$="radis" : c$="radis noirs"

remplace(b$,c$,"c:\temp\source.txt","c:\temp\destination.txt")

' Pour vérifier le résultat
memo 3:width 3,580:height 3,250:file_load 3,"c:\temp\source.txt"
memo 4:width 4,580:height 4,250:top 4,253:file_load 4,"c:\temp\destination.txt"
end

SUB Remplace(b$,c$,source$,destination$)
' remplacer la séquence b$ par c$ dans le fichier source$, résultat dans le fichier destination$
   dim_local a$,d$,k,h
   file_open_read 1,source$ : file_open_write 2,destination$
   while file_eof(1)=0
      file_readln 1,a$
         k=instr(a$,b$) : d$=right_pos$(a$,k+len(b$))
      repeat
         if k>0
            a$=left$(a$,k-1)+c$+d$ : k=instr_pos(a$,d$,1) : h=instr(d$,b$)
            if h>0
               k=k+h-1:d$=right_pos$(a$,k+len(b$))
            else
               k=0
            end_if
         end_if
      until k=0
      file_writeln 2,a$
   end_while
   file_close 1 : file_close 2
end_sub
Après, vous avez le choix.
- Ou vous renommez destination.txt en source.txt et vous continuez à transformer vos radis en radis noirs: cela donne des radis noirs noirs, puis des radis noirs noirs noirs, etc...
- Ou alors vous renommez destination.txt en source.txt et dans le code vous inversez b$ et c$ soit b$="radis noirs" et c$="radis" et par miracle vous retrouvez le premier texte d'origine!
J'ai vérifié aussi si mes radis se transformait en tapis!  lol! 

Ouf! Quelle histoire! Bon je remballe mon Remplacer une sous-chaîne de caractères par une autre <a href=Remplacer une sous-chaîne de caractères par une autre Moquet10" />

pour continuer à vendre mes Remplacer une sous-chaîne de caractères par une autre <a href=Remplacer une sous-chaîne de caractères par une autre Salade10" />
 Laughing Laughing Laughing 
A+  Wink Wink Wink
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre EmptyMar 4 Fév 2014 - 13:36

On frôle l'indigestion de radis, mais j'aime beaucoup mieux comme ça !
Ce problème de remplacement d'une chaîne par une autre qui contient la première ça revient régulièrement...
Comme les radis...

Bon, je ne vais pas être radin, je te mets un 10/10
Après l'Enfer, le (Pa)radis (je me demande s'il y en a là-bas... des radis... malgré le nom...)
Revenir en haut Aller en bas
Contenu sponsorisé





Remplacer une sous-chaîne de caractères par une autre Empty
MessageSujet: Re: Remplacer une sous-chaîne de caractères par une autre   Remplacer une sous-chaîne de caractères par une autre Empty

Revenir en haut Aller en bas
 
Remplacer une sous-chaîne de caractères par une autre
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Remplacer une chaîne par une autre
» Recherche d'une chaîne de caractères dans une arborescence
» Inverser une chaîne de caractères
» Comparaison de 2 chaîne d caractères.
» Une autre façon de présenter un menu et ses sous-menus

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: