Savoir si une chaîne contient des lettres

phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015 - 11 sept. 2013 à 15:05
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 - 12 sept. 2013 à 16:46
Bonjour,

je vous embête un peu, il me faudrait un moyen de savoir si une chaîne contient des lettre sans passer par d'autre fonction (style Pos, ou même Regex).

Pour l'instant j'ai pondu ça, mais ça me renvoi juste si il y a un 'a' mais il faudrait que je sache pour toutes les lettre de l'alphabet.

Peut être avec un array ?

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;
var s,s2,s3:string;
i   :integer;
begin
s:='33389866a9563958498';
s3:='a';
Str(length(s),s2); //convertit une valeur en chaine
if s2 = '19' then
for i:=1 to Length(s)-1 do
  if s[i]=s3 then
  write('ok')
  else
  write('ko');
  readln(s);
end.


Merci d'avance pour votre aide !
--

5 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
11 sept. 2013 à 15:08
salut !

tu peux utiliser la fonction strstr :
http://php.net/manual/fr/function.strstr.php

sinon tu vérifie :

if( (($var[i]>='A') && ($var[i]<='Z')) || (($var[i]>='a') && ($var[i]<='a'))


naga
0
phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015
11 sept. 2013 à 15:10
salut Naga,

elle fonctionne sous delphi aussi ? Oo

--
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
11 sept. 2013 à 15:54
ah l'idiot j'ai confondu x)

mais sinon la seconde méthode reste viable, cependant la syntaxe sera plutot :
if (s[i] in ['a'..'z'] )  Or (s[i] in ['A'..'Z'] ) 


désolé pour l'erreur -_-'
0
phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015
11 sept. 2013 à 16:11
ah trop tard je n'avais pas vu ! ^^ merci quand même
0
phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015
11 sept. 2013 à 15:46
J'ai trouvé, voici la solution au cas ou :

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;
var
s,s2:string;
i   :integer;
begin
s:='3333333333333333333';
Str(length(s),s2);             // si 19 caractères (référence à l'ID User de la table HSD User
if s2 = '19' then
for i:=1 to Length(s) do
  if (s[i] in ['0'..'9']) then // si contient des chiffres
  write('0')
  else                         // sinon
  write('1');
  read(s);
end.


--
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
11 sept. 2013 à 15:56
et en fait si je comprend bien , tu écris 1 si ce n'est pas un chiffre, et non si c'est une lettre ... c'est à dire que si tu lis '#' tu le considère comme une lettre.

Bref c'était juste un petit point ^^
0
phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015
11 sept. 2013 à 16:10
oui même #, mon but étant de s'assurer que la string ne contenait que des chiffres.
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
11 sept. 2013 à 16:17
ok je comprends mieux ^^

et bien bon dev !
naga
0
phoenixgreg Messages postés 77 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 août 2015
11 sept. 2013 à 16:21
thx!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 sept. 2013 à 14:24
const
  csAlphaLow    = 'abcdefghijklmnopqrstuvwxyz';
  csAlphaUp     = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  csAlphaFr     = 'éèàêûâÉÈÀÊÛÂ';
  csNumeric     = '0123456789';
  csHexanum     = '0123456789abcdefABCDEF';
  csPunctuation = '.,;!?''"-: ';
  csSpecial     = '&$#/{}()[]@^%+*-';

function strContain(const str, chars: string): boolean;
var Ns, Ls: integer;
begin
  Ls := length(str);
  result := true;
  for Ns := 1 to Ls do
  begin
    result := result and (pos(str[Ns], chars) <> 0);
    if not result then
      break;
  end;
end;


utilisation :

  str := '{ TODO -oUtilisateur -cCode du point d''entrée : Placez le code ici }'; 
  writeLn(strContain(str, csSpecial+csAlphaLow)); // FALSE
  str := '{ TODO -oUtilisateur -cCode du point d''entrée : Placez le code ici }';
  writeLn(strContain(str, csSpecial+csAlphaLow+csAlphaUp+csPunctuation)); // FALSE
  str := '{ TODO -oUtilisateur -cCode du point d''entrée : Placez le code ici }';
  writeLn(strContain(str, csSpecial+csAlphaLow+csAlphaUp+csAlphaFr+csPunctuation)); // TRUE

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
12 sept. 2013 à 16:27
Si tu veux juste contrôler que la chaine ne contient que des chiffre, peut être que l'utilisation de la fonction VAL suffit puisqu'elle fournit un code d'erreur si le résultat n'est pas un nombre
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
12 sept. 2013 à 16:46
0
Rejoignez-nous