@Michael: Il y a eu une erreur de compilation. Comment êtes-vous censé utiliser ToCharArray sinon de cette façon?
Craig Johnston
3
Pour mémoire, ToCharArrayest une méthode , vous devez l'exécuter d'abord, par exemple char[] chars = str.ToCharArray();, puis utiliser char first = chars[0];. Vous pouvez également le découper str.ToCharArray()[0];. Dans tous les cas, assurez-vous de vérifier que la chaîne n'est pas nulle et qu'elle contient au moins un caractère - vous pouvez le faire en utilisant if(!String.IsNullOrEmpty(str)).
Kobi
1
Craig .. l'utilisation de ToCharArray est incorrecte. Voyez ma réponse.
Nayan
4
Voulez-vous le premier charou le premier caractère ? Si vous essayez ceci et que cela semble fonctionner, essayez à nouveau avec 𣊾ou 𣇞, qui ont tous deux échoué dans un programme que j'utilisais et qui a été écrit en C # avec ce bogue exact.
hippietrail
Réponses:
382
Juste MyString[0]. Cela utilise l' indexeur String.Chars .
La différence entre cette réponse et celle choisie est que cette solution renvoie une chaîne et l'autre renvoie un caractère.
Loïc Lopes
char n'obtient qu'un seul caractère mais ma solution peut en résulter plus d'un si vous le souhaitez.
Sanjay Kumaar
1
C'était juste une précision car le type peut avoir de l'importance en fonction de ce que vous voulez en faire.
Loïc Lopes
18
La différence entre MyString[0]et MyString.ToCharArray()[0]est que le premier traite la chaîne comme un tableau en lecture seule, tandis que ToCharArray()crée un nouveau tableau. Le premier sera plus rapide (et plus facile) pour presque tout ce qui fonctionnera, mais ToCharArraypeut être nécessaire si vous avez une méthode qui doit accepter un tableau, ou si vous souhaitez changer le tableau.
Si la chaîne n'est pas connue pour être non nulle et non vide, vous pouvez faire:
Correct est MyString [position du caractère]. Pour votre cas MyString [0], 0 est le PREMIER caractère de toute chaîne.
Une valeur de caractère est désignée par '(guillemet simple), comme cette valeur de caractère x s'écrit' x '.
Une valeur de chaîne est désignée par "(guillemets doubles), comme cette valeur de chaîne x s'écrit" x ".
Donc, la méthode Substring () ne renvoie pas non plus de caractère, la méthode Substring () renvoie une chaîne !!!
Une chaîne est un tableau de caractères et le dernier caractère doit être le caractère «\ 0» (nul). C'est la différence entre le tableau de caractères et la chaîne (qui est un tableau de caractères avec le dernier caractère comme "marqueur de fin de chaîne" '\ 0' nul.
Et notez également que «x» N'EST PAS ÉGAL à «x». Parce que "x" est en fait 'x' + '\ 0'.
ToCharArray
est une méthode , vous devez l'exécuter d'abord, par exemplechar[] chars = str.ToCharArray();
, puis utiliserchar first = chars[0];
. Vous pouvez également le découperstr.ToCharArray()[0];
. Dans tous les cas, assurez-vous de vérifier que la chaîne n'est pas nulle et qu'elle contient au moins un caractère - vous pouvez le faire en utilisantif(!String.IsNullOrEmpty(str))
.char
ou le premier caractère ? Si vous essayez ceci et que cela semble fonctionner, essayez à nouveau avec𣊾
ou𣇞
, qui ont tous deux échoué dans un programme que j'utilisais et qui a été écrit en C # avec ce bogue exact.Réponses:
Juste
MyString[0]
. Cela utilise l' indexeur String.Chars .la source
Mystring[0]
Cela devrait suffirela source
Essaye ça,
string s1="good"; string s=s1.Substring(0,1);
la source
La différence entre
MyString[0]
etMyString.ToCharArray()[0]
est que le premier traite la chaîne comme un tableau en lecture seule, tandis queToCharArray()
crée un nouveau tableau. Le premier sera plus rapide (et plus facile) pour presque tout ce qui fonctionnera, maisToCharArray
peut être nécessaire si vous avez une méthode qui doit accepter un tableau, ou si vous souhaitez changer le tableau.Si la chaîne n'est pas connue pour être non nulle et non vide, vous pouvez faire:
qui renvoie une valeur
char?
nulle ou le premier caractère de la chaîne, selon le cas.la source
char?
comme moyen d'inclure la possibilité "il n'y a pas de premier caractère".Vous pouvez utiliser LINQ
Il sera égal à
'\0'
si la chaîne est vide.la source
Ou vous pouvez faire ceci:
la source
Juste une autre approche:
la source
Je pense que tu cherches ça
MyString.ToCharArray()[0]
:)
Mais vous pouvez
MyString[0]
aussi l' utiliser .la source
L'exemple suivant pour obtenir le premier caractère d'une chaîne peut aider quelqu'un
la source
MyString.Remove (1, 2); fonctionne aussi
la source
La réponse à votre question est NON.
Correct est MyString [position du caractère]. Pour votre cas MyString [0], 0 est le PREMIER caractère de toute chaîne.
Une valeur de caractère est désignée par '(guillemet simple), comme cette valeur de caractère x s'écrit' x '.
Une valeur de chaîne est désignée par "(guillemets doubles), comme cette valeur de chaîne x s'écrit" x ".
Donc, la méthode Substring () ne renvoie pas non plus de caractère, la méthode Substring () renvoie une chaîne !!!
Une chaîne est un tableau de caractères et le dernier caractère doit être le caractère «\ 0» (nul). C'est la différence entre le tableau de caractères et la chaîne (qui est un tableau de caractères avec le dernier caractère comme "marqueur de fin de chaîne" '\ 0' nul.
Et notez également que «x» N'EST PAS ÉGAL à «x». Parce que "x" est en fait 'x' + '\ 0'.
la source
En C # 8, vous pouvez utiliser des plages.
Ajoutez un
?
aprèsmyString
pour gérer lesnull
chaînes.la source
l'obtention d'un caractère à partir d'une chaîne peut dépendre de l'encadrement (la chaîne par défaut est UTF-16)
https://stackoverflow.com/a/32141891
la source