Hola petite question simple,
j'aime vérifier qu'une chaîne de caractère respecte un certain format du style " S-XXX-C-XXX_xxxxxx_XXXX";
Les X étant des chiffres ou des lettres.
Merci beaucoup
Version imprimable
Hola petite question simple,
j'aime vérifier qu'une chaîne de caractère respecte un certain format du style " S-XXX-C-XXX_xxxxxx_XXXX";
Les X étant des chiffres ou des lettres.
Merci beaucoup
Bonjour,
Quand je cherche à vérifier si une chaine respecte un certains format, je pense tout de suite à une regex.
Par contre je n'ai jamais su les générer tout seul (il faut vraiment que je m'y mette), mais il existe des sites tout fait pour ça, par exemple celui-ci (le premier que j'ai trouvé, il y en a d'autres).
Tatayo.
Salut,
en effet j'ai déjà fait le regex qui vérifie par exemple s'il y le S- puis un autre qui vérifie s'il y'a le -C- mais j'aimerai quelque chose de plus optimisé et qui remplisse mes conditions...
Le Regex et les expressions régulières vont t'y aider :
https://docs.microsoft.com/fr-fr/dot...tframework-4.8
Je pensais me servir de ça
ou bienCode:
1
2 S-[\d]{3}-C-[\d]{3}_[a-zA-Z]_[\d]{3}
j'ai aucune idée de comment gérer ça ?Code:
1
2 S-[\d]{3}-C-[\d]{3}_[\w]_[\d]{3}
Précise ce que tu veux faire exactement comme contrôle.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Program { static void Main(string[] args) { //string test = "S-XXX-C-XXX_xxxxxx_XXXX"; string test = "S-12f-C-2E3_xxxxxx_a00X"; string pattern = @"\AS-\w{3}-C-\w{3}_x{6}_\w{4}\z"; Regex rgx = new Regex(pattern); Match m = rgx.Match(test); Console.WriteLine(m.Value); } }
Pardon , déjà merci pour la réponse.
Je souhaitais vérifié que le format du nom de fichier ai le même pattern que celui du pattern sinon je supprime le fichier
Ça marche du coup donc merci voilà la solution cependant :
La je précise le nombre d'argument que j'attend, serait-t'il possible de juste préciser que j'attend quelque chose sans forcément un nombre défini ou alors est il possible de limiter ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 private static void Main(string[] args) { var test = "S-458-C-236_4xd_598"; var pattern = @"S-[\d]{3}-C-[\d]{3}_[\w]{3}_[\d]{3}"; var rgx = new Regex(pattern); var m = rgx.Match(test); if (m.Success) { Console.WriteLine("SUCCESS PATTERN FOR " + m.Value); } else { Console.WriteLine("ERROR PATTERN"); } }
8O Tu peux préciser ta pensée ?Citation:
La je précise le nombre d'argument que j'attend, serait-t'il possible de juste préciser que j'attend quelque chose sans forcément un nombre défini ou alors est il possible de limiter ?
Oui de suite :mouarf: :mouarf: :mouarf:
Voilà un exemple de nom de fichier:
S-459-C-785_TestAluminium_568
S-459-C-785_TestCarbone_568
Le texte entre les deux "_" n'ont pas tout les deux le même nombre de caractères. Or les deux ont le bon format.
Je veux que ces espaces de texte entre les underscores soient libres et donc flexible.s
Ici :
Le "_[\w]{3}_" oblige seulement trois caractères. J'aimerai avoir une indication de comment devenir flexible sur l'élément "_[\w]_".Code:
1
2"S-[\d]{3}-C-[\d]{3}_[\w]{3}_[\d]{3}"
Exemple :
Code:
1
2
3
4
5 "S-[\d]{3}-C-[\d]{3}_[\w]{n}_[\d]{3}" // ou "S-[\d]{3}-C-[\d]{3}_[\w]_[\d]{3}" // Sauf que ces deux solutions ne marchent pas
Code:string pattern = @"\AS-\d{3}-C-\d{3}_\w+_\d{3}\z";
Attention car \w+ correspond a [a-zA-Z0-9_]+ (lettre, nombre, underscore). S'il ne faut accepter que des lettres et uniquement des lettres, alors il vaut mieux etre explicite avec [a-zA-Z]+.
Ok merci à tous c'est bon.
Je close le poste