181 votes

Comment obtenir les cinq premiers caractères d'une chaîne de caractères ?

J'ai lu ceci question pour obtenir le premier caractère de la chaîne. Existe-t-il un moyen d'obtenir les n premiers caractères d'une chaîne de caractères en C# ?

290voto

Habib Points 93087

Vous pouvez utiliser Enumerable.Take comme :

char[] array = yourStringVariable.Take(5).ToArray();

Ou vous pouvez utiliser Chaîne.sous-chaîne .

string str = yourStringVariable.Substring(0,5);

Rappelez-vous que String.Substring pourrait lever une exception si la longueur de la chaîne est inférieure au nombre de caractères requis.

Si vous voulez récupérer le résultat dans une chaîne de caractères, vous pouvez utiliser :

  • Utilisation du constructeur String et des LINQ's Take

    string firstFivChar = new string(yourStringVariable.Take(5).ToArray());

L'avantage de cette approche est qu'il n'y a pas de vérification préalable de la longueur.

  • L'autre moyen est d'utiliser String.Substring avec vérification des erreurs

comme :

string firstFivCharWithSubString = 
    !String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
    ? yourStringVariable.Substring(0, 5)
    : yourStringVariable;

59voto

TechDo Points 11224

Essayez, s'il vous plaît :

yourString.Substring(0, 5);

Vérifiez Sous-chaîne en C# , Méthode String.Substring

45voto

Adil Points 80031

Vous pouvez utiliser Substring(int startIndex, int length)

string result = str.Substring(0,5);

La sous-chaîne commence à une position de caractère spécifiée et a un caractère longueur spécifiée. Cette méthode ne modifie pas la valeur de l'instance actuelle. courante. Au lieu de cela, elle renvoie une nouvelle chaîne de caractères de longueur à partir de la position startIndex dans la chaîne actuelle, MSDN

Que se passe-t-il si la chaîne source comporte moins de cinq caractères ? Vous obtiendrez une exception en utilisant la méthode ci-dessus. Nous pouvons mettre une condition pour vérifier si le nombre de caractères dans la chaîne est supérieur à 5, puis récupérer les cinq premiers par Substring. Notez que j'ai assigné la chaîne source à la variable firstFiveChar. La variable firstFiveChar ne change pas si les caractères sont inférieurs à 5, donc la partie else n'est pas nécessaire.

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
      firstFiveChar = yourStringVariable.Substring(0, 5);

40voto

ilter Points 827

Personne n'a mentionné comment effectuer des contrôles appropriés lors de l'utilisation de Substring() donc je voulais contribuer à ce sujet.

Si vous ne voulez pas utiliser Linq et aller avec Substring() vous devez vous assurer que votre chaîne de caractères est plus grande que le deuxième paramètre (longueur) de la fonction Substring() función.

Disons que vous avez besoin des 5 premiers caractères. Vous devriez les obtenir avec une vérification appropriée, comme ceci :

string title = "love"; // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);

// firstFiveChars: "love" (4 characters)

Sans ce contrôle, Substring() lèverait une exception parce qu'elle itérerait sur des lettres qui ne sont pas là.

Je pense que vous avez compris l'idée...

25voto

Steven Points 479

Le problème avec .Substring(,) c'est que vous devez être sûr que la chaîne de caractères donnée a au moins la longueur du nombre de caractères demandé, autrement un ArgumentOutOfRangeException seront lancés.

Solution 1 (utilisation de 'Substring') :

var firstFive = stringValue != null && stringValue.Length > 5 ? 
                   stringValue.Substring(0, 5) :
                   stringValue;

L'inconvénient d'utiliser .Substring( est que vous devrez vérifier la longueur de la chaîne donnée.

Solution 2 (en utilisant "Take") :

var firstFive = stringValue != null ? 
                    string.Join("", stringValue.Take(5)) : 
                    null;

Utilisation de "Prendre vous évitera de devoir vérifier la longueur de la chaîne donnée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X