Les Snippets

Connexion

Exclure des caracteres d'une chaine.

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 24/04/2007 18:08:31 et initié par f0xi [Liste]
Date de mise à jour : 03/05/2007 13:50:38
Vue : 15501
Catégorie(s) : Trucs & Astuces, Chaîne de caractères
Langages dispo pour ce code :
- Delphi 5
- VB6, VBA
- C
- Javascript
- Delphi 5
- C# 1.x, C# 2.x, C# 3.x
- VB 2005, VB 2008, VB.NET 1.x



Langage : Delphi 5
Date ajout : 24/04/2007
Posté par f0xi [Liste]
DateMAJ : 24/04/2007
{ ExcludeChars
    
    Fonction permettant d'exclure des caracteres d'une chaine selon un "charset" donné.
  
    Params :
     S  [I] string, chaine originale dont ont vas exclure les caracteres
     CS [I] TSysCharSet (SysUtils), ensemble des caracteres a exclure.
  
    Return :
     String, chaine excluant tout les caracteres definis dans CS.
  
    Exemple 1 :
     // OldStr = '"; echo "tentative d'injection sql";
     NewStr := ExcludeChars(OldStr, ['<','>',';','"','''','/']);
     // NewStr = echo tentative dinjection sql
 
   Exemple 2 :
    const
     CSNumber : TSysCharSet = ['0'..'9'];
     CSSymbols: TSysCharSet = ['+','-','*','/','='];
    ...
    NewStr := ExcludeChars(OldStr, CSNumber+CSSymbols);
 
 }
  function ExcludeChars(const S : string; const CS : TSysCharSet) : string;
  var pR : PChar;
      L,I,N: integer;
  begin
    L := Length(S);
    I := 0;
    for N := 1 to L do 
      if S[N] in CS then I := I + 1;
    I := L - I;
    if I = 0 then 
    begin
      result := '';
      exit;
    end else
    begin
      SetLength(Result, I);
      pR := PChar(Result);
      for N := 1 to L do
        if not (S[N] in CS) then 
        begin 
          pR[0] := S[N];
          inc(pR);
        end;
    end;
  end;
Langage : VB6 , VBA
Date ajout : 25/04/2007
Posté par jrivet [Liste]
DateMAJ : 03/05/2007
Option Explicit
'Appel
Private Sub Command1_Click()
   'NOTE: Il faut bien séparer les caracteres a remplacer
   'Comme ci dessous sinon cela ne fonctionne pas.
   Call MsgBox(ExcludeChars("TEST POUR VOIR", "R", "E"))
End Sub 
'Fonction Public Function ExcludeChars(ByVal S As String, ParamArray CS()) As String Dim pR    'Boucle sur chaque Element du ParamArray    For Each pR In CS        'Utilise la fonction Replace sur la chaine S        S = Replace(S, pR, vbNullString)    Next    'retourne le résultat des remplacement    ExcludeChars = S End Function
Langage : C
Date ajout : 25/04/2007
Posté par SAKingdom [Liste]
/*
   Exclue de la chaîne string tous les caractères 
   contenus dans la chaîne e.
   Les modifications sont effectuées à même la chaîne 
   originale ce qui signifie qu'elle sera modifiée.
 
   Exemple d'utilisation:
   char test[] = "Bonjour les amis";
   exclchrs(test, "oes");
 
   test contiendra:
   "Bnjur le ami"
 */
 char *exclchrs (char *string, char *e)
 {
   char *c, *p;
 
   if(!string || !e || !*e) return 0; // <- À retirer dans un code sûr
 
   c = string;
 
   while(*c) {
     p = e;
 _exclchrs_loop:
     if(*p == *c) { ++c; continue; }
     if(*++p) goto _exclchrs_loop;
 
     *string++ = *c++;
   }
 
   *string = 0;
 
   return string; // Retour sur 0 de fin de chaîne
 }
Langage : Javascript
Date ajout : 02/05/2007
Posté par stfou [Liste]
var caractères="eos";
var chaine="Bonjour les amis";
enleve(chaine,caractères)
function enleve(string,chars){
for(i=0;i<chars.length;i++){
string.replace(new RegExp(chars.charAt(i),"gi"),"")}}
Langage : Delphi 5
Date ajout : 03/06/2007
Posté par cirec [Liste]
Function ExcludeChars(Const S : String; const CS : TSysCharSet): String;
Var P, PR : PByte;
    Size, I    : Integer;
Begin
  P    := PByte(S);
  Size := Length(S);
  SetLength(Result, Size);
  PR   := PByte(Result);
  I := 0;
  While P^ <> $0 do Begin
    If Not (Chr(P^) in CS) Then Begin 
      Pr^ := P^;
      Inc(Pr);
    End
    Else Inc(I);
    Inc(P);
  End;
  If I > 0 Then SetLength(Result, Size - I)
End;

Function ExcludeChars(Const S : String; const CS : TSysCharSet): String; Var P, PR : PByte;     BS : Set Of Byte Absolute CS;     Size, I    : Integer; Begin   P    := PByte(S);   Size := Length(S);   SetLength(Result, Size);   PR   := PByte(Result);   I := 0;   While P^ <> $0 do Begin     If Not (P^ in BS) Then Begin       Pr^ := P^;       Inc(Pr);     End     Else Inc(I);     Inc(P);   End;   If I > 0 Then SetLength(Result, Size - I) End;
Remarque :
Deux variantes de la fonction de F0xi
mais ~50% plus rapide (pour les deux)
en faite les deux versions se valent c'est juste l'approche qui est légèrement différente
Langage : C# 1.x , C# 2.x , C# 3.x
Date ajout : 11/12/2008
Posté par Charles Racaud [Liste]
public static string ExcludeChars(string str, params char[] Chars) {
  foreach (char c in Chars)
    str = str.Replace(c.ToString(), string.Empty);
  return str;
}
Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 11/12/2008
Posté par Charles Racaud [Liste]
Public Function ExcludeChars(ByVal str As StringByVal ParamArray Chars() As CharAs String
  For Each c As Char In Chars
    str = str.Replace(c.ToString(), String.Empty)
  Next
  Return str
End Function

Snippets en rapport avec : Chaine, Caractere, Replace, Charset



Codes sources en rapport avec : Chaine, Caractere, Replace, Charset

{C / C++ / C++.NET} GSTRING - GESTION DES CHAINES DE CARACTÈRES
Voici une petite classe permettant de gérer les chaines de caractères tout comme les std::string, av...

{Assembleur} LECTURE ET ECRITURE D'UN CARACTERE ET D'UNE CHAINE DE CARACTERE !
bon j'ai essayer d'utiliser des interruption pour la première fois je suis vraiment débutant en ass...

{Visual Basic, VB6, VB.NET, VB 2005} PROGRAMME POUR RENOMMER PLUSIEUR FICHIER
J'ai fait ce programme pour renommer les fichiers (a l'origine les mp3). Il permet d'enlever , rajo...

{Javascript / DHTML} REMPLACER UN MOT DANS UNE CHAINE
Bonjour, N'aimant pas travailler avec les expressions régulières sous javascript, voici une fonct...

{PHP} FONCTION DE CONVERSION D'UNE CHAINE DE CARACTÈRE VERS UN TYPAGE UNIX
Bonjour, Alors cette fonction permet de convertir n'importe quelle chaine de caractère en une équiv...

{C / C++ / C++.NET} CLASSE DE GESTION DE CHAINE DE CARACTERES SECURISEE [VC++2K5]
Ca ne doit pas être la seule du genre mais regardez le source et vous comprendrez par vous meme...

{C / C++ / C++.NET} EDITEUR DE TEXTE EN LIGNE DE COMMANDE - C - DEVCPP - CHAINES DE CARACTÈRES
Un petit éditeur de texte qui fonctionne en ligne de commande c'est à dire en mode texte. Pour savo...

{C / C++ / C++.NET} SETIOSFLAGS ET RESETIOSFLAGS
Ce code présente différentes valeurs (paramètres) que peut adopter le manipulateur setiosflags. Cha...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRESSION DE CARACTÈRES DANS UN STRING
Voici une petite fonction qui permet de supprimer n'importe quel caractère (autant que l'on veut) d'...

{C / C++ / C++.NET} CLASSE CCHAINE
Une petite classe équivalente à la classe MFC CString mais en plus pratique...