cs_EXCLUSIF
Messages postés59Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 9 août 2007
-
10 juil. 2007 à 19:12
cs_EXCLUSIF
Messages postés59Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 9 août 2007
-
10 juil. 2007 à 20:29
Bonjour à tous,
Je me bats afin de trouver une solution pour remplacer une sous-chaine de caractère dans une chaine.
Exemple de chaine : "Ciseler le persil"
Exemple de sous-chaine à remplacer: "sel" -> à remplacer par sel
Bien entendu je ne dois faire le remplacement que si la sous-chaine ne
fait pas partie d'un mot plus grand ("Ciseler" dans mon cas). Dans mon exemple donc le remplacement ne sera pas effectuer. En revanche si ma chaine principale était "ajouter du sel." alors le mot "sel" aurait été remplacé par "sel" et ma chaine serait donc "ajouter du sel."
Je ne dois la remplacer que si le caractère avant la sous-chaine est un
espace, un point ou une virgule (OU si la sous-chaine est au debut de
la chaine) ET si le caractère suivant la sous chaine est un espace, un
point ou une virgule (OU si la sous-chaine est à la fin de la chaine).
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 10 juil. 2007 à 19:27
Bonjour,
Il me semble bien avoir (sur ce forum ??... je ne sais plus...) déjà vu ce "truc" là !
Mais dis-moi, t'as oublié des trucs ( les parenthèses possibles devant et/ou derrière, les guimllemets possibles, devant et/ou derrière, la gestion de la casse, etc... etc..., non ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 juil. 2007 à 19:45
Salut
Si tu travailles sur une chaine dans une variable, comme tu l'as souligné, il va falloir tester le caractère situé devant et derrière.
Pour repérer un texte : Instr
Une fois que cette fonction t'aura fourni l'emplacement du début du mot, suffira de tester :
- si c'est le 1er caractère de la chaine
- si le caractère avant (réponse - 1) est un espace, parenthèse ou ponctuation
- si le caractère après (réponse + longueur du mot + 1) est un espace, parenthèse ou ponctuation ou la fin du texte.
Si tu travailles dans une RichTextBox, idée : la fonction SPAN permet de rechercher en avant ou en arrière une série de caractères.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
cs_EXCLUSIF
Messages postés59Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 9 août 20071 10 juil. 2007 à 20:29
Merci à vous 2 pour vos réponses rapides. En effet jmfmarques il faudra que je rajoute les parenthèses etc... (la casse n'a pas d'importance) mais une fois que le plus gros sera fait, je n'aurai plus qu'à les rajouter.
Merci pour tes suggestions jack, ca conforte ce que j'avais commencé à faire, hélas ca ne fonctionne pas du tout et je ne sais pas du tout pourquoi. Enfin si je sais, c'est que je suis un newbie ;-)
SQl = "SELECT * FROM T_Ingredients"
qr.Open SQl, db, adOpenKeyset, adLockOptimistic
qr.MoveFirst
WhileNot qr.EOF
MyPos = InStr(1, strMyHtml, qr!IngredientPluriel)
Dim strCaracterePrecedent AsString
Dim strCaractereSuivant AsString
Dim boolCaracterePrecedent AsBoolean
Dim boolCaractereSuivant AsBoolean
boolCaracterePrecedent = False
boolCaractereSuivant = False