un ou plusieurs mots suivent les divers paramètre conditionnel
dite-moi ce que vous en pensez, je pense que c’est loin d’être optimiser
mais c’est je pense mieux que rien
Code : Tout sélectionner
Procedure.s ExtraireMot(Chaine$, PositionDepart = 1, CaractereDepart$ = "", ModPosExtCarDep = 0, Positionfin = 0, CaractereFin$ = "", ModPosExtCarFin = 0, RespecterCase = 0, TerSiNomCar = -1, TerSiNomMot = -1, TerSiNomCarIde = -1, CarIde$ = "")
; bien, comment sa marche ?!:
; Chaine$ est la chaine de caractère
; PositionDepart est position de recherche de départ (igniorer si CaractereDepart$ est > "")
; CaractereDepart$, définie la position de départ automatiquement en recherchent les caractères CaractereDepart$
; ModPosExtCarDep est un ajustement de la position de départ d'éxtraction
; par exemple si CaractereDepart$ = [ et bien ce caractère sera pris en compte dans cette recherche car
; ont commence l'éxtraction a partir de ce cacartère la, mais grace a cette variable ModPosExtCarDep
; ont peut ajuster la position d'éxtraction de départ, exemple: '1' = + 1, '-1' = -1, etc.
; Positionfin est pareil que pour PositionDepart, sauf que la des qu'on atteint cette position, on stop l'éxtraction (igniorer si CaractereFin$ est > "")
; CaractereFin$ est pareil que pour CaractereDepart$ a la différence que ici ont définie la position de fin automatiquement en recherchent les caractères CaractereFin$
; ModPosExtCarFin est pareil que ModPosExtCarDep sauf que ici ont ajuste la position de fin d'extraction
; RespecterCase est pour réspécter la case, recherchera éxactement les caractères donner dans la chaine, 0 = prend pas en compte la case, 1 = prend en compte la case
; TerSiNomMot est pour détèrminer l'extraction a partire du momment ou ont as éxtrait le nombre de mots voulue, ce paramètre prends parfois le dessue sur:
; Positionfin, CaractereFin$, ModPosExtCarFin
; prend le dessue si: Positionfin et CaractereFin$ n'ont pas été atteint et trouvé
; TerSiNomCar est pour détèrminer l'extraction a partire du momment ou ont as éxtrait le nombre de caractere voulue, ce paramètre prends parfois le dessue sur:
; Positionfin, CaractereFin$, ModPosExtCarFin, TerSiNomMot
; prend le dessue si: Positionfin et CaractereFin$ n'ont pas été atteint et trouvé et si TerSiNomMot n'as pas été atteind
; TerSiNomCarIde est pour stoper l'extraction quand le nombre de caractère identique a atteind un certain nombre, ce paramètre commence a partire de 2
; a utiliser conjointement avec Caractere$ qui définie le caractère en question
; si ses paramètre sont corecte alors ModPosExtCarDep et ModPosExtCarFin seron mis automatiquement à 0
; d'ailleur il est égallement a noté que le dernier caractère identique ne sera pas pris en compte dans la chaine
ChaineSauvagarde$ = Chaine$
If TerSiNomCar < -1
TerSiNomCar = -1 ; = extrait tous les caracteres
ElseIf TerSiNomCar = 0
TerSiNomCar = -1
EndIf
If TerSiNomMot < -1
TerSiNomMot = -1 ; = extrait tous les mots
ElseIf TerSiNomMot = 0
TerSiNomMot = -1
EndIf
If TerSiNomCarIde < -1
TerSiNomCarIde = -1 ; = extrait tous les mots
ElseIf TerSiNomCarIde = 0
TerSiNomCarIde = -1
ElseIf TerSiNomCarIde = 1
TerSiNomCarIde = -1
EndIf
If TerSiNomCarIde > CountString(Chaine$, CarIde$)
TerSiNomCarIde = CountString(Chaine$, CarIde$)
EndIf
If TerSiNomCarIde > 1 And CarIde$ > ""
ModPosExtCarDep = 0
ModPosExtCarFin = 0
EndIf
If PositionDepart = -1 Or PositionDepart > Len(Chaine$)
PositionDepart = Len(Chaine$)
ElseIf PositionDepart < -1
PositionDepart = -1
ElseIf PositionDepart = 0
PositionDepart = 1
EndIf
If Positionfin = -1 Or Positionfin > Len(Chaine$)
Positionfin = Len(Chaine$)
ElseIf Positionfin < -1
Positionfin = -1
EndIf
If RespecterCase <= 0
RespecterCase = 0
ElseIf RespecterCase > 1
RespecterCase = 1
EndIf
If RespecterCase = 0 ; on ne respecte pas la case, 1 on respecte la case
Chaine$ = LCase(Chaine$)
CaractereDepart$ = LCase(CaractereDepart$)
CaractereFin$ = LCase(CaractereFin$)
EndIf
If CaractereDepart$ > ""
PositionDepart = FindString(Chaine$, CaractereDepart$, 1)
If PositionDepart > 0
PositionDepart - 1
ElseIf PositionDepart = 0
ProcedureReturn ""
EndIf
EndIf
If CaractereFin$ > ""
Chaine$ = Mid(ChaineSauvagarde$, 1)
Positionfin = FindString(Chaine$, CaractereFin$, 1)
If Positionfin > 0
Positionfin + Len(CaractereFin$)
ElseIf Positionfin = 0
Positionfin = Len(Chaine$)
EndIf
EndIf
PositionDepart + ModPosExtCarDep
Positionfin + ModPosExtCarFin
PositionExtraction = PositionDepart - 1
Chaine$ = ChaineSauvagarde$
Repeat
Repeat
PositionExtraction + 1
caractere$ = Mid(Chaine$, PositionExtraction, 1)
BufferCarIde$ = Mid(Chaine$, PositionExtraction, Len(CarIde$))
If CarIde$ > "" And BufferCarIde$ = CarIde$
CaractereIdentique + 1
EndIf
If TerSiNomCarIde > 0 And CaractereIdentique = TerSiNomCarIde
Terminer = 1
EndIf
If TerSiNomCar <> -1 And TerSiNomCar = nombre_de_caractere
Break
EndIf
If NombreMot <> -1 And NombreMot = TerSiNomMot
Terminer = 1
EndIf
If Positionfin <> 0
If PositionExtraction => Positionfin
Break
EndIf
EndIf
If caractere$ = " " And Mot$ = ""
nombre_de_caractere + 1
Continue
ElseIf caractere$ <> "" And caractere$ <> " "
Mot$ = Mot$ + caractere$ ; ont enregistre le caractère
nombre_de_caractere + 1
Continue
ElseIf caractere$ = " " And Mot$ > " "
nombre_de_caractere + 1
Break ; ont quitte la boucle car l'éxtraction du Mot$ clée est tèrminer
ElseIf caractere$ = "" And Mot$ > " "
nombre_de_caractere + 1
Break ; ont quitte aussie la boucle car l'éxtraction du Mot$ clée est tèrminer
ElseIf caractere$ = "" And Mot$ = ""
Break ; ont quitte la boucle car ya rien
EndIf
ForEver
If Mot$ > ""
ChaineMot$ + Mot$ + "|"
NombreMot + 1
Mot$ = ""
EndIf
If Terminer = 1
ChaineMot$ = Mid(ChaineMot$, 1, Len(ChaineMot$) - 2)
ChaineMot$ + "|"
Break
EndIf
Until PositionExtraction => Len(Chaine$)
ProcedureReturn ChaineMot$
EndProcedure
Debug ExtraireMot(" Le: tigre: à: [L'éléphant est gris] rouge ", 0, "", 0, 0, "", 0, 0, 0, 0, 2, ":")Code : Tout sélectionner
Procedure.s ExtrairePremierMot(Chaine$)
Repeat
PositionExtraction + 1
caractere$ = Mid(Chaine$, PositionExtraction, 1)
If caractere$ = " " And Mot$ = ""
nombre_de_caractere + 1
Continue
ElseIf caractere$ <> "" And caractere$ <> " "
Mot$ = Mot$ + caractere$ ; ont enregistre le caractère
nombre_de_caractere + 1
Continue
ElseIf caractere$ = " " And Mot$ > " "
nombre_de_caractere + 1
Break ; ont quitte la boucle car l'éxtraction du Mot$ clée est tèrminer
ElseIf caractere$ = "" And Mot$ > " "
nombre_de_caractere + 1
Break ; ont quitte aussie la boucle car l'éxtraction du Mot$ clée est tèrminer
ElseIf caractere$ = "" And Mot$ = ""
Break ; ont quitte la boucle car ya rien
EndIf
ForEver
ProcedureReturn Mot$
EndProcedure
Debug ExtrairePremierMot(" Le tigre rouge ")