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# ?
Réponses
Trop de publicités?C'est comme ça qu'on fait en 2020 :
var s = "ABCDEFGH";
var first5 = s.AsSpan(0, 5);
A Span<T> pointe directement vers la mémoire de la chaîne, évitant ainsi d'allouer une chaîne temporaire. Bien entendu, toute méthode ultérieure demandant un string
nécessite une conversion :
Console.WriteLine(first5.ToString());
Bien que, de nos jours, beaucoup .NET
Les API autorisent l'utilisation d'intervalles. Respectez-les si possible !
Note : Si le ciblage .NET Framework
ajouter une référence à la System.Memory mais n'attendez pas les mêmes performances.
Sur C# 8.0 vous pouvez obtenir les cinq premiers caractères d'une chaîne de caractères comme suit
string str = data[0..5];
Voici quelques informations supplémentaires sur Indices et fourchettes
Voici une méthode d'extension qui vérifie si une chaîne de caractères est plus grande que ce qui est nécessaire et raccourcit la chaîne de caractères au nombre maximum défini et ajoute '...'.
public static class StringExtensions
{
public static string Ellipsis(this string s, int charsToDisplay)
{
if (!string.IsNullOrWhiteSpace(s))
return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
return String.Empty;
}
}