J'ai lu cette question pour obtenir le premier caractère de la chaîne. Existe-t-il un moyen d'obtenir le premier nombre de caractères n d'une chaîne en C #?
J'ai lu cette question pour obtenir le premier caractère de la chaîne. Existe-t-il un moyen d'obtenir le premier nombre de caractères n d'une chaîne en C #?
Réponses:
Vous pouvez utiliser Enumerable, comme:
char[] array = yourStringVariable.Take(5).ToArray();
Ou vous pouvez utiliser String.Substring .
string str = yourStringVariable.Substring(0,5);
N'oubliez pas que cela String.Substring
pourrait lever une exception si la longueur de la chaîne est inférieure aux caractères requis.
Si vous souhaitez récupérer le résultat sous forme de chaîne, vous pouvez utiliser:
Utilisation du constructeur de chaînes et de LINQ Take
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
Le plus avec l'approche n'est pas de vérifier la longueur avant la main.
String.Substring
avec la vérification des erreurscomme:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
IsNullOrWhiteSpace
est faux ici. Considérez une chaîne avec 10 blancs - votre code renverra tous les 10. Utilisez à la IsNullOrEmpty
place. (Il n'est pas bon de combiner IsNullOrWhiteSpace
avec un autre test; Au lieu de cela, testez null + vide, alors Trim
si c'est le comportement spécifié, alors faites les tests / opérations nécessaires.)
S'il vous plaît essayez:
yourString.Substring(0, 5);
Vérifier la sous- chaîne C # , méthode String.Substring
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 une longueur spécifiée. Cette méthode ne modifie pas la valeur de l'instance actuelle. Au lieu de cela, il renvoie une nouvelle chaîne avec des caractères de longueur à partir de la position startIndex dans la chaîne actuelle, MSDN
Que faire 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 obtenir les cinq premiers via Substring. Remarque J'ai attribué la chaîne source à la variable firstFiveChar. Le firstFiveChar ne change pas si les caractères sont inférieurs à 5, donc une autre partie n'est pas requise.
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Personne n'a mentionné comment effectuer les vérifications appropriées lors de l'utilisation Substring()
, alors je voulais contribuer à ce sujet.
Si vous ne voulez pas utiliser Linq
et aller avec Substring()
, vous devez vous assurer que votre chaîne est plus grande que le deuxième paramètre (longueur) de la Substring()
fonction.
Disons que vous avez besoin des 5 premiers caractères. Vous devriez les obtenir avec un chèque approprié, comme ceci:
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
Sans cette vérification, la Substring()
fonction lèverait une exception car elle itérerait à travers des lettres qui ne sont pas là.
Je pense que vous avez l'idée ...
Le problème .Substring(,)
est que vous devez vous assurer que la chaîne donnée a au moins la longueur du nombre de caractères demandé, sinon un ArgumentOutOfRangeException
sera renvoyé.
Solution 1 (en utilisant 'Substring'):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
L'inconvénient de l'utilisation .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;
L'utilisation de 'Take' vous évitera d'avoir à vérifier la longueur de la chaîne donnée.
Utilisez la fonction PadRight pour éviter que la chaîne ne soit trop courte, saisissez ce dont vous avez besoin puis coupez les espaces à la fin en une seule instruction.
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Je ne sais pas pourquoi quelqu'un a mentionné cela. Mais c'est le moyen le plus court et le plus simple d'y parvenir.
string str = yourString.Remove(n);
n
- nombre de caractères dont vous avez besoin
Exemple
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Ajoutez cinq espaces blancs puis coupez les cinq premiers et coupez le résultat. Le nombre d'espaces que vous ajoutez doit correspondre au nombre que vous coupez. Assurez-vous d'inclure la parenthèse avant .Substring(0,X)
ou vous n'ajouterez rien.
string str = (yourStringVariable + " ").Substring(0,5).Trim();
Avec cette technique, vous n'aurez pas à vous soucier de ce qui est ArgumentOutOfRangeException
mentionné dans d'autres réponses.
string str = "GoodMorning"
string strModified = str.Substring(0,5);
Juste un avertissement, il existe une nouvelle façon de faire cela dans C # 8.0: les opérateurs de plage
Ou comme j'aime les appeler, des tranches de Pandas.
Ancienne façon:
string newString = oldstring.Substring(0, 5);
Nouvelle façon:
string newString = oldstring[..5];
Ce qui à première vue semble être un assez mauvais compromis entre une certaine lisibilité pour un code plus court, mais la nouvelle fonctionnalité vous donne
des trucs sympas comme ça:
var slice1 = liste [2 .. ^ 3]; // liste [Range.Create (2, Index.CreateFromEnd (3))]
var slice2 = liste [.. ^ 3]; // liste [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = liste [2 ..]; // liste [Range.FromStart (2)]
var slice4 = liste [..]; // liste [Range.All]
Pour obtenir les n premiers caractères d'une chaîne en C #
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
Vous trouverez ci-dessous une méthode d'extension qui vérifie si une chaîne est plus grande que ce qui était nécessaire et raccourcit la chaîne au nombre maximal de caractères 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;
}
}
En C # 8.0, vous pouvez obtenir les cinq premiers caractères d'une chaîne comme ceci
string str = data[0..5];
Voici quelques informations supplémentaires sur les indices et les plages
J'utilise:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
ou alternative si vous souhaitez également vérifier les espaces blancs (au lieu de seulement Null):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Ou vous pouvez utiliser String.ToCharArray () .
Il prend int startindex
et et int length
comme paramètres et renvoie unchar[]
new string(stringValue.ToCharArray(0,5))
Vous devrez toujours vous assurer que la chaîne a la bonne longueur, sinon elle lancera un ArgumentOutOfRangeException
Veuillez essayer ce code lorsque str est inférieur à 5.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Si nous ne voulons que les 5 premiers caractères de n'importe quel champ, cela peut être réalisé par l'attribut gauche
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Essayez ci-dessous le code
string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);
J'ai essayé les réponses ci-dessus et la meilleure que je pense est celle-ci
@item.First_Name.Substring(0,1)
En cela, je pourrais obtenir la première lettre de la chaîne
char
** s et vous demandez les ** caractères . Ce n'est pas la même chose.𣊾
et il𣇞
y a deux caractères que j'avais besoin d'utiliser hier qui ont échoué dans le logiciel écrit en C # que j'utilisais parce que le programmeur ne connaissait pas la différence entre unchar
et un caractère. Ne tombez pas dans ce piège!