Le comte de longueur de mot sans l'aide de fonctions Intégré
C'est une question que j'ai rencontré et a échoué
Supposons que dire
string str = "wordcounter";
On peut trouver facilement la Longueur à l'aide d' str.Length
Cependant, est-il possible en C# pour obtenir le nombre de lettres, sans l'aide de tous intégré des fonctions comme Length
, SubStr
etc
- Pourquoi ne pas vous voulez utiliser la fonction intégrée de fonctions?
- J'ai essayé
string temp = "Hello World"; int i = 0; for (i = 0; temp[i] != '\0'; i++) ; Console.WriteLine(i);
et a été déçu de découvrir que C# Chaînes de caractères NE contiennent PAS un caractère null de la fin. J'ai inclus ma tentative ici pour référence future.
Vous devez vous connecter pour publier un commentaire.
vous pourriez écrire une boucle pour incrémenter un compteur à l'intérieur de cette boucle:
il y a aussi une autre façon:
il y a aussi un autre, qui va encore plus loin en utilisant le SysStringByteLen fonction qui fonctionne sur un BSTR. Des chaînes dans .NET sont mis en mémoire à l'aide d'un 4 octets entier contenant la longueur de la chaîne, suivie en cela par de nombreux 2 octets UTF-16 caractères représentant de chaque personnage. Ceci est similaire à la façon dont Bstr sont stockées. Donc:
Évidemment faire quelque chose comme ça au lieu d'utiliser le haut-
Length
fonction ne doit jamais être fait dans n'importe quel réel de la production de code et le code présenté ici ne doit pas être pris au sérieux.int numberOfLetters = str.ToCharArray().Length;
Mais dans cette ligne de code que nous avons intégré la fonction.Ma réponse est un peu tardive, mais je voudrais pour le même poste. Si toutes les solutions mentionnées ci-dessus sont corrects, mais je crois que la IL de le foreach ne sait au sujet de la longueur de l'objet iterable avant l'itération d'elle. Parler d'une pure solution, voici la mienne:
Comment sur?
pas très rapide mais yo peut toujours en boucle et compter le nombre de caractère contenue.
Mon général, la solution consiste sans l'aide de 'foreach' ou 'StringBuilder" (qui sont en C# spécifiques) ou sans prendre aucune exception.