En C#, dans une variable de type string, j'aimerait savoir combien de fois
revien un certain caractère, par exemple "e". quelqu'un connait-il une façon
simple de le savoir ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Alex! :O)
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre : '*** String s = "abcde fgeij"; Console.WriteLine(Regex.Split(s, "e").Length - 1); '***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) : //*** // Compte le nombre de fois que l'on retrouve expr1 dans expr2 public Int32 StrCount(string expr1, string expr2, bool caseSensitive) {
//Vérifie si les chaines ne sont pas null ou vides if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) || (expr2.Length = 0)) return;
if (!caseSensitive) { expr1 = expr1.ToLower(); expr2 = expr2.ToLower(); }
// Boucle expr2 for (Int32 i = 0; i <= nLen1 - nLen2; i++) if (expr2 == expr1.Substring(i, nLen2)) nCount++;
return nCount; } //***
Note qu'avec les 2 méthodes tu peux chercher une suite de caractère entières et non juste une lettre.
-- Cordialement Yanick MVP pour Visual Basic
"Alex St-laurent" a écrit dans le message de news:
En C#, dans une variable de type string, j'aimerait savoir combien de fois revien un certain caractère, par exemple "e". quelqu'un connait-il une
façon
simple de le savoir ?
Merci
Salut Alex! :O)
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre
:
'***
String s = "abcde fgeij";
Console.WriteLine(Regex.Split(s, "e").Length - 1);
'***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à
une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) :
//***
// Compte le nombre de fois que l'on retrouve expr1 dans expr2
public Int32 StrCount(string expr1, string expr2, bool caseSensitive)
{
//Vérifie si les chaines ne sont pas null ou vides
if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) ||
(expr2.Length = 0))
return;
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre : '*** String s = "abcde fgeij"; Console.WriteLine(Regex.Split(s, "e").Length - 1); '***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) : //*** // Compte le nombre de fois que l'on retrouve expr1 dans expr2 public Int32 StrCount(string expr1, string expr2, bool caseSensitive) {
//Vérifie si les chaines ne sont pas null ou vides if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) || (expr2.Length = 0)) return;
en initialisant nbParentheseOuverte à -1 et indexParentheseOuverte à 0 je me retrouve finalement avec le nombre exact de "(" dans ma chaine.
"Zoury" wrote:
Salut Alex! :O)
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre : '*** String s = "abcde fgeij"; Console.WriteLine(Regex.Split(s, "e").Length - 1); '***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) : //*** // Compte le nombre de fois que l'on retrouve expr1 dans expr2 public Int32 StrCount(string expr1, string expr2, bool caseSensitive) {
//Vérifie si les chaines ne sont pas null ou vides if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) || (expr2.Length = 0)) return;
if (!caseSensitive) { expr1 = expr1.ToLower(); expr2 = expr2.ToLower(); }
// Boucle expr2 for (Int32 i = 0; i <= nLen1 - nLen2; i++) if (expr2 == expr1.Substring(i, nLen2)) nCount++;
return nCount; } //***
Note qu'avec les 2 méthodes tu peux chercher une suite de caractère entières et non juste une lettre.
-- Cordialement Yanick MVP pour Visual Basic
"Alex St-laurent" a écrit dans le message de news: > En C#, dans une variable de type string, j'aimerait savoir combien de fois > revien un certain caractère, par exemple "e". quelqu'un connait-il une façon > simple de le savoir ? > > Merci
Merci Zoury!
J'ai finalement opter pour une boucle assez standart en utilisant la méthode
indexOf(). Je recherchait le caractère "(". voici ce que ça donne :
en initialisant nbParentheseOuverte à -1 et indexParentheseOuverte à 0 je
me retrouve finalement avec le nombre exact de "(" dans ma chaine.
"Zoury" wrote:
Salut Alex! :O)
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre
:
'***
String s = "abcde fgeij";
Console.WriteLine(Regex.Split(s, "e").Length - 1);
'***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à
une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) :
//***
// Compte le nombre de fois que l'on retrouve expr1 dans expr2
public Int32 StrCount(string expr1, string expr2, bool caseSensitive)
{
//Vérifie si les chaines ne sont pas null ou vides
if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) ||
(expr2.Length = 0))
return;
if (!caseSensitive)
{
expr1 = expr1.ToLower();
expr2 = expr2.ToLower();
}
// Boucle expr2
for (Int32 i = 0; i <= nLen1 - nLen2; i++)
if (expr2 == expr1.Substring(i, nLen2))
nCount++;
return nCount;
}
//***
Note qu'avec les 2 méthodes tu peux chercher une suite de caractère entières
et non juste une lettre.
--
Cordialement
Yanick
MVP pour Visual Basic
"Alex St-laurent" <AlexStlaurent@discussions.microsoft.com> a écrit dans le
message de news:284897CE-5A93-472C-BF69-18C8F7C4D076@microsoft.com...
> En C#, dans une variable de type string, j'aimerait savoir combien de fois
> revien un certain caractère, par exemple "e". quelqu'un connait-il une
façon
> simple de le savoir ?
>
> Merci
en initialisant nbParentheseOuverte à -1 et indexParentheseOuverte à 0 je me retrouve finalement avec le nombre exact de "(" dans ma chaine.
"Zoury" wrote:
Salut Alex! :O)
si tu ne veux pas te casser la tête, tu peux essayer quelque chose du genre : '*** String s = "abcde fgeij"; Console.WriteLine(Regex.Split(s, "e").Length - 1); '***
mais je serais curieux de comparé la vitesse d'exécution de cette méthode à une boucle standard.. surtout sur de longues chaines..
ex (traduit de VB.NET sans retesté..) : //*** // Compte le nombre de fois que l'on retrouve expr1 dans expr2 public Int32 StrCount(string expr1, string expr2, bool caseSensitive) {
//Vérifie si les chaines ne sont pas null ou vides if ((expr1 == null) || (expr2 == null) || (expr1.Length == 0) || (expr2.Length = 0)) return;
if (!caseSensitive) { expr1 = expr1.ToLower(); expr2 = expr2.ToLower(); }
// Boucle expr2 for (Int32 i = 0; i <= nLen1 - nLen2; i++) if (expr2 == expr1.Substring(i, nLen2)) nCount++;
return nCount; } //***
Note qu'avec les 2 méthodes tu peux chercher une suite de caractère entières et non juste une lettre.
-- Cordialement Yanick MVP pour Visual Basic
"Alex St-laurent" a écrit dans le message de news: > En C#, dans une variable de type string, j'aimerait savoir combien de fois > revien un certain caractère, par exemple "e". quelqu'un connait-il une façon > simple de le savoir ? > > Merci
Zoury
> J'ai finalement opter pour une boucle assez standart en utilisant la
méthode
indexOf().
Bonne idée. Je ne me souvenais plus du deuxième paramètre d'IndexOf() qui permet de préciser la position de départ. C'est possiblement plus rapide que Substring(). faudrait testé.. (mais j'ai pas le temps :O/)
-- Cordialement Yanick MVP pour Visual Basic
> J'ai finalement opter pour une boucle assez standart en utilisant la
méthode
indexOf().
Bonne idée. Je ne me souvenais plus du deuxième paramètre d'IndexOf() qui
permet de préciser la position de départ. C'est possiblement plus rapide que
Substring(). faudrait testé.. (mais j'ai pas le temps :O/)
> J'ai finalement opter pour une boucle assez standart en utilisant la
méthode
indexOf().
Bonne idée. Je ne me souvenais plus du deuxième paramètre d'IndexOf() qui permet de préciser la position de départ. C'est possiblement plus rapide que Substring(). faudrait testé.. (mais j'ai pas le temps :O/)