Exclure des caractères d'un string

Résolu
Signaler
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
-
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
-
bonjour,

je n'ai pas accès au "Snippets" de mon ordinateur principal alors que j'ai accès par un ordinateur d'un collègue ... bizarre !

je voulais juste proposer une variante du code de FOxi (il avait fait une version de Stringreplace +/-), ma variant est :
<hr />function ExcludeChars(const S : string; const CS : TSysCharSet) : string;
var
i,L:integer;
begin
    result:=s; L:=0;
    for i:=1 to length(s) do
    begin
          if not (s[i] in CS) then
          begin
              inc(L); result[L]:=s[i];
          end;
    end;
    Setlength(result,L);
end;<hr />
par exemple : showmessage(ExcludeChars('voiture',['i','u']));

"voiture" devient "votre"

en m'excusant de poster ici en attendant (vous pouvez bien sur émettre d'autres variantes)

DrJerome

8 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
En effet ce Snippet n'a pas été activé
tout simplement parce qu'il n'apporte rien de plus
et en plus elle est encore plus lente que celle de F0xi

 
@+
Cirec

<hr size="2" />
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

<hr />
function ExcludeChars(const S : string; const CS : TSysCharSet) : string;
var
i,L:integer;
begin
    result:=s; L:=0;
    for i:=1 to length(s) do
    begin
          if not (s[i] in CS) then
          begin
              inc(L); result[L]:=s[i];
          end;
    end;
    Setlength(result,L);
end;
<hr />






DrJerome
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

Affaire classée

on laisse tomber, c'est juste de la bidouille

DrJerome
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

Bonjour Cirec

je te crois sur parole pour le test de vitesse. Je n'essaierai pas de faire mieux

DrJerome
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
seul la version proposée par Cirec ou Japee ? est plus rapide que la mienne.

Il utilise pour cela un buff de byte plutot qu'un buff de char et bizarrement, c'est plus rapide.

<hr size="2" width="100%" />Croc (click me)
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
"seul la version proposée par Cirec ou Japee ?"

c'est Cirec, moi je déclare forfait lol
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
ce n'est pas vraiment bizarre ...
les données qu'elles soient en mémoire ou sur le disque sont en Byte (généralement) ... (enfin si je ne raconte pas de conneries )

J'ai fait énormément de testes ces derniers temps avec les pointeurs sur Bytes (PByte) et à tous les coups c'est plus rapide
que n'importe quel autre pointeur dont une fonction (la fonction qui enlève les accents il me semble) qui est jusqu'à 4 fois plus rapide que la tienne  (je ne l'ai pas encore posté mais ça ne saurait tarder )

En tout cas toi qui est "mordu" de vitesse tu devrais t'y intéresser
les gains ne sont pas négligeables

 
@+
Cirec

<hr size="2" />
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Arf ...
mais c'est qu'il y a du monde encore à cette heure ci
 
@+
Cirec

<hr size="2" />