Page 1 sur 2

Dans un texte supprimer les éventuels doubles espaces

Publié : sam. 10/sept./2022 17:09
par MLD
Bonjour a tous sur le fofo us quelqu’un a posé cette question "Dans un texte supprimer les éventuels doubles espaces".
Les réponses pour résoudre le problème me laisse perplexe, ou je n'est rien compris :roll: allez voir.
Pour ma part et pour le fun je propose ceci:

Code : Tout sélectionner

;MLD le 10/9/2022
;Dans un texte supprimer les éventuels doubles espaces
a$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, "
b$ = "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker"
c$ =" de grands nombres  avec une précision aussi élevée que des petits   nombres." 
L$ = a$ + b$ + c$

Procedure.s SS(L$)
max = Len(L$)
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    If Asc(Mid(L$,x+1,1)) = 32
      x=x+1
    EndIf
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure
LL$ = SS(L$)

Debug L$

Debug LL$

Quelqu’un a t'il un code plus court ou plus rapide :?:
chez nos amis des USA il y a d'autre codes de manipulation de texte qui sont surprenant/ nous verrons cela plus tard.
Amusez vous bien
bon WE

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : sam. 10/sept./2022 17:22
par Micoute
j'ai fait une procédure analogue quand j'étais plus jeune, ce n'est pas sûr qu'elle soit plus courte.

Code : Tout sélectionner

Procedure.s SupprimerEspaces(Chaine.s, separateur.s) ; - supprime les espaces superflus
  Protected Caractere.a = 0
  Protected Remplissage.a = 0
  Protected Sortie.s, i.i
  
  For i = 1 To Len(Chaine)
    Caractere = Asc(Mid(Chaine,i,1))
    If Caractere <> 32
      Remplissage = 1 
      Sortie + Chr(Caractere)  
    EndIf 
    
    If Caractere = 32 And Remplissage = 1
      Remplissage = 0
      Sortie + separateur
    EndIf 
  Next   
  ProcedureReturn Sortie
EndProcedure

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : sam. 10/sept./2022 18:34
par case
je propose une modification a ton code mld.

Code : Tout sélectionner

;MLD le 10/9/2022
;Dans un texte supprimer les éventuels doubles espaces
a$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, "
b$ = "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker"
c$ =" de grands nombres       avec une précision aussi élevée que des petits   nombres."   ; ajout de plusieurs espaces ne fonctionne pas avec ton code
L$ = a$ + b$ + c$

Procedure.s SS(L$)
max = Len(L$)
Debug max
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    While Asc(Mid(L$,x+1,1)) = 32     ; ma modification: tant qu'il y a un espace a la position x
      x=x+1					      ; x+1
    Wend                                          ; permet de 'sauter plusieurs espace a la suite car dans ton exemple seul 1 espace est teste.
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure
LL$ = SS(L$)

Debug L$

Debug LL$

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : sam. 10/sept./2022 20:58
par Ar-S
J'ai tenté une approche avec les regex.
Si la détection est aisée, je ne pige pas pourquoi le replacestring ne fait pas le boulot.

Code : Tout sélectionner

Structure plop
    name.s
    pos.i
    lon.i
EndStructure

Global NewList cible.plop()

a$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, "
b$ = "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker"
c$ =" de grands nombres       avec une précision aussi élevée que des petits   nombres."
String$ = a$ + b$ + c$
p$ = "[ ]{2,}" ; 2 espaces ou plus
Debug  String$

CreateRegularExpression(0,p$)
If ExamineRegularExpression(0, string$)
    While NextRegularExpressionMatch(0)
        AddElement(cible())
        cible()\name = RegularExpressionMatchString(0)
        cible()\pos = RegularExpressionMatchPosition(0)
        cible()\lon = RegularExpressionMatchLength(0)
        Debug "*"+cible()\name+"* <-- espaces multiples : position : " + Str(cible()\pos)+ "  longueur : " + Str(cible()\lon)
        count+1
    Wend
EndIf
Debug Str(count)+" trouvées"

ForEach cible()
    String$ = ReplaceString(String$,cible()\name,Chr(32),#PB_String_NoCase,0)
Next

Debug String$

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 8:08
par Marc56
[...] "Dans un texte supprimer les éventuels doubles espaces". [...]

Code : Tout sélectionner

A$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, " + 
     "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker" +
     " de grands nombres       avec une précision aussi élevée que des petits   nombres."

If CreateRegularExpression(0, "\h{2,}")
    Debug ReplaceRegularExpression(0, A$, " ")
Else
    Debug RegularExpressionError()
EndIf
:wink:

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 10:33
par GallyHC

Code : Tout sélectionner

text.s = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, " + 
       "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker" +
       " de grands nombres       avec une précision aussi élevée que des petits   nombres."

text = Trim(text)
While CountString(text, "  ") > 0
  text = ReplaceString(text, "  ", " ")
Wend

Debug text

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 13:14
par MLD
@ Merci a tous
Que de choses intéressantes. Nos amis qui sont sur le fofo US devraient venir nous voir plus souvent.
@case: Pourquoi pas, mais il y a deux boucles :lol:
@Ar-S et Marc56: Incontestablement c'est le code le plus court Je ne sait pas ce que cela donne en temps. :lol: :roll:
@Gally : J'ai pensé aussi a ReplaceString, mais je crains que cette fonction soit assez mangeuse de temps. :lol:
@Micoute: Tu as le code le plus long. :lol:

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 14:00
par TazNormand
Salut

J'ai copié tous vos codes en un seul pour voir les temps de chacun.

Alors soit j'ai fait une boulette sur la partie de GallyHC, soit les fonction de PB sont super optimisées car c'est le sien qui obtient le meilleur temps

Pour que les temps soient un peu plus parlant, j'ai dupliqué plein de fois le texte et voici les temps dans l'ordre du code :

Code : Tout sélectionner

MLD      : 1854 ms
Micoute  : 2046 ms
Case     : 1818 ms
Ar-S     :  119 ms
Marc56   :   11 ms
GallyHc  :    1 ms
Si je me suis trompé sur le code de GallyHC, il est clair que les RegEx sont puissantes, tant qu'on les maîtrise comme Marc56, sinon, y' pas photo ===> fonction de PB à utiliser en 1er

Bon dimanche à tous

Code : Tout sélectionner

;MLD le 10/9/2022
;Dans un texte supprimer les éventuels doubles espaces
a$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, "
b$ = "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker"
c$ =" de grands nombres  avec une précision aussi élevée que des petits   nombres." 
L$ = a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$

Procedure.s SS(L$)
max = Len(L$)
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    If Asc(Mid(L$,x+1,1)) = 32
      x=x+1
    EndIf
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure
t0.f=ElapsedMilliseconds()
LL$ = SS(L$)
t1.f=ElapsedMilliseconds()
Debug L$
Debug LL$
t2.f=t1-t0
Debug "MLD Time : " + t2

Debug "=========================================================================="


; Micoute

Procedure.s SupprimerEspaces(Chaine.s, separateur.s) ; - supprime les espaces superflus
  Protected Caractere.a = 0
  Protected Remplissage.a = 0
  Protected Sortie.s, i.i
  
  For i = 1 To Len(Chaine)
    Caractere = Asc(Mid(Chaine,i,1))
    If Caractere <> 32
      Remplissage = 1 
      Sortie + Chr(Caractere)  
    EndIf 
    
    If Caractere = 32 And Remplissage = 1
      Remplissage = 0
      Sortie + separateur
    EndIf 
  Next   
  ProcedureReturn Sortie
EndProcedure
t0=ElapsedMilliseconds()
LL$=SupprimerEspaces(L$," ")
t1=ElapsedMilliseconds()
t2=t1-t0
Debug L$
Debug LL$
Debug "Micoute Time : " + t2


Debug "=========================================================================="

; Case

Procedure.s SS2(L$)
max = Len(L$)
Debug max
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    While Asc(Mid(L$,x+1,1)) = 32     ; ma modification: tant qu'il y a un espace a la position x
      x=x+1					      ; x+1
    Wend                                          ; permet de 'sauter plusieurs espace a la suite car dans ton exemple seul 1 espace est teste.
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure
t0=ElapsedMilliseconds()
LL$ = SS2(L$)
t1=ElapsedMilliseconds()
t2=t1-t0
Debug L$
Debug LL$
Debug "Case Time : " +t2

Debug "=========================================================================="

; Ar-S

Structure plop
    name.s
    pos.i
    lon.i
EndStructure

Global NewList cible.plop()

String$ = L$
p$ = "[ ]{2,}" ; 2 espaces ou plus
Debug  String$
t0=ElapsedMilliseconds()
CreateRegularExpression(0,p$)
If ExamineRegularExpression(0, string$)
    While NextRegularExpressionMatch(0)
        AddElement(cible())
        cible()\name = RegularExpressionMatchString(0)
        cible()\pos = RegularExpressionMatchPosition(0)
        cible()\lon = RegularExpressionMatchLength(0)
        ;Debug "*"+cible()\name+"* <-- espaces multiples : position : " + Str(cible()\pos)+ "  longueur : " + Str(cible()\lon)
        count+1
    Wend
EndIf
Debug Str(count)+" trouvées"

ForEach cible()
    String$ = ReplaceString(String$,cible()\name,Chr(32),#PB_String_NoCase,0)
Next
t1=ElapsedMilliseconds()
Debug String$
t2=t1-t0
Debug "Ar-S time : "+t2

Debug "=========================================================================="

; Marc56

A$ = L$
t0=ElapsedMilliseconds()
If CreateRegularExpression(0, "\h{2,}")
    Debug ReplaceRegularExpression(0, A$, " ")
Else
  Debug RegularExpressionError()
EndIf
t1=ElapsedMilliseconds()
t2=t1-t0
Debug "Marc56 Time : "+t2
  
  
  Debug "=========================================================================="
  
  ;GallyHC
  
  text.s = L$
t0=ElapsedMilliseconds()
text = Trim(text)
While CountString(text, "  ") > 0
  text = ReplaceString(text, "  ", " ")
Wend
t1=ElapsedMilliseconds()
t2=t1-t0
Debug text
Debug "GallyHC time : "+t2

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 18:32
par Micoute
Pour une fois que j'ai la plus longue, je ne vais pas m'en plaindre.

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 19:04
par manababel
Bonjour
voici ma petite contribution

Code : Tout sélectionner

;MLD le 10/9/2022
;Dans un texte supprimer les éventuels doubles espaces
a$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, "
b$ = "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker"
c$ =" de grands nombres  avec une précision aussi élevée que des petits   nombres." 
L$ = a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$
L$ = L$ + a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$+a$ + b$ + c$

Procedure.s SS(L$)
max = Len(L$)
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    If Asc(Mid(L$,x+1,1)) = 32
      x=x+1
    EndIf
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure

; Micoute
Procedure.s SupprimerEspaces(Chaine.s, separateur.s) ; - supprime les espaces superflus
  Protected Caractere.a = 0
  Protected Remplissage.a = 0
  Protected Sortie.s, i.i
  
  For i = 1 To Len(Chaine)
    Caractere = Asc(Mid(Chaine,i,1))
    If Caractere <> 32
      Remplissage = 1 
      Sortie + Chr(Caractere)  
    EndIf 
    
    If Caractere = 32 And Remplissage = 1
      Remplissage = 0
      Sortie + separateur
    EndIf 
  Next   
  ProcedureReturn Sortie
EndProcedure


; Case
Procedure.s SS2(L$)
max = Len(L$)
For x =1 To max
  If Asc(Mid(L$,x,1)) = 32 
    While Asc(Mid(L$,x+1,1)) = 32     ; ma modification: tant qu'il y a un espace a la position x
      x=x+1					      ; x+1
    Wend                                          ; permet de 'sauter plusieurs espace a la suite car dans ton exemple seul 1 espace est teste.
  EndIf
  LL$ = LL$ + Mid(L$,x,1) 
Next
ProcedureReturn LL$
EndProcedure


; Ar-S
Structure plop
    name.s
    pos.i
    lon.i
EndStructure

Global NewList cible.plop()

Procedure.s ars(l$)
  String$ = L$
  p$ = "[ ]{2,}" ; 2 espaces ou plus
  t0=ElapsedMilliseconds()
  CreateRegularExpression(0,p$)
  If ExamineRegularExpression(0, string$)
    While NextRegularExpressionMatch(0)
      AddElement(cible())
      cible()\name = RegularExpressionMatchString(0)
      cible()\pos = RegularExpressionMatchPosition(0)
      cible()\lon = RegularExpressionMatchLength(0)
      count+1
    Wend
  EndIf
  ForEach cible()
    String$ = ReplaceString(String$,cible()\name,Chr(32),#PB_String_NoCase,0)
  Next
  ProcedureReturn String$
EndProcedure

; Marc56
Procedure.s marc56(l$)
A$ = L$
If CreateRegularExpression(0, "\h{2,}")
    ReplaceRegularExpression(0, A$, " ")
Else
  RegularExpressionError()
EndIf
ProcedureReturn a$
EndProcedure

;GallyHC
Procedure.s GallyHC(l$)
  text.s = L$
text = Trim(text)
While CountString(text, "  ") > 0
  text = ReplaceString(text, "  ", " ")
Wend
ProcedureReturn text
EndProcedure

Procedure.s mana(L$)
  l2$=l$
  t=@l$
  t2=@l2$
  max = Len(L$)
  x1 = 0
  For x =0 To max+2
    If PeekL( t + x<<1) <> $200020
      PokeA((t2+x1), PeekL(t+x<<1))
      x1=x1+2
      EndIf
    Next
    PokeA((t2+x1), $2e)
  ProcedureReturn l2$
EndProcedure




Procedure draw(y,t1$,t2$,t3$,t4$)
  StartDrawing(WindowOutput(0))
  DrawText(5,y+00,t1$)
  DrawText(5,y+20,t2$)
  DrawText(5,y+40,"long = "+t3$)
  DrawText(5,y+60,"temps = "+t4$)
  StopDrawing()
EndProcedure

tx = 1024
ty = 800
If OpenWindow(0, 0, 0, tx, ty, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StartDrawing(WindowOutput(0))
  Box(0,0,tx,ty,0)
  DrawText(5,0,"default")
  DrawText(5,20,"long = "+Len(l$))
  DrawText(5,40,l$)
  StopDrawing()
  
y = 80
t.f=ElapsedMilliseconds()
LL$ = SS(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"ss",ll$,Str(lg),Str(t))

y = y + 100
t.f=ElapsedMilliseconds()
LL$ = SupprimerEspaces(L$," ")
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"Micoute",ll$,Str(lg),Str(t))

y = y + 100
t.f=ElapsedMilliseconds()
LL$ = ss2(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"ss2",ll$,Str(lg),Str(t))

y = y + 100
t.f=ElapsedMilliseconds()
LL$ = ars(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"ars",ll$,Str(lg),Str(t))

y = y + 100
t.f=ElapsedMilliseconds()
LL$ = marc56(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"marc56",ll$,Str(lg),Str(t))
y = y + 100
t.f=ElapsedMilliseconds()
LL$ = GallyHC(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"GallyHC",ll$,Str(lg),Str(t))

y = y + 100
t.f=ElapsedMilliseconds()
LL$ = mana(L$)
t.f=ElapsedMilliseconds() - t
lg=Len(ll$)
draw(y,"mana",ll$,Str(lg),Str(t))

Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_Event_CloseWindow
EndIf

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 20:14
par GallyHC
@manababel > dans ton exemple c'est qui galluht ?

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : dim. 11/sept./2022 20:22
par Ar-S
J'étais passé à coté de ReplaceRegularExpression :?

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : lun. 12/sept./2022 6:29
par manababel
Dsl GallyHC
c'est une erreur de "copier coller"

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : lun. 12/sept./2022 10:22
par MLD
@ Bonjour a tous
Merci a TazNormand, et manababel
les résultats de Taz sont confirmés par ceux de manababel.
Honnêtement je n'aurais pas parié sur la fonction PB . Mais donc chapeau a Fred pour l'optimisation de la fonction. et bravo a Mrc56 pour la maitrise des RegEx
Bonne journée a tous.

Re: Dans un texte supprimer les éventuels doubles espaces

Publié : lun. 12/sept./2022 13:34
par Mesa
Le plus simple à mon avis.

Code : Tout sélectionner

A$ = "Un nombre flottant  est stocké de telle manière que la 'virgule flotte' autour de la partie réelle. De la sorte, " + 
     "il est possible d'avoir des nombres dont la valeur peut être aussi bien grande que petite. Toutefois vous ne pouvez pas stocker" +
     " de grands nombres       avec une précision aussi élevée que des petits   nombres."

t1=ElapsedMilliseconds()

Repeat
	A = Len(A$)
	A$ = ReplaceString(A$, "  "," ")
Until A = Len(A$)

t2=ElapsedMilliseconds()

Debug A$
Debug t2-t1
M.