Et pour une meilleure lisibilité, vous pouvez utiliser "". Il compile exactement la même chose que string.Empty ces jours-ci.
PRMan
Il ne "" crée pas une nouvelle chaîne, tandis que string.Empty en fait référence. Cela n'a pas vraiment d'importance en termes de performances (je veux dire que c'est une chaîne vide alors oui ...) mais je voulais juste le souligner :)
Zer0 il y a
11
Substring a deux méthodes de surcharge:
publicstringSubstring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.publicstringSubstring(int startIndex,int length);//The substring starts at a specified character position and taking length no of character from the startIndex.
Donc, pour ce scénario, vous pouvez utiliser la première méthode comme celle-ci ci-dessous:
var str ="hello world!";
str = str.Substring(10);
Ici, la sortie est:
d!
Si vous pouvez appliquer un codage défensif en vérifiant sa longueur.
Il n'est pas nécessaire de spécifier la longueur dans la Substringméthode. Par conséquent:
string s = hello world;string p = s.Substring(3);
p sera:
"lo monde".
La seule exception dont vous devez tenir compte est ArgumentOutOfRangeExceptionsi
startIndexest inférieur à zéro ou supérieur à la longueur de cette instance.
C# 8n'est pas pris en charge lors du ciblage .NET Framework.
l33t
0
L'appel SubString()alloue une nouvelle chaîne. Pour des performances optimales, vous devez éviter cette allocation supplémentaire. En commençant par, C# 7.2vous pouvez profiter du modèle Span .
Lors du ciblage .NET Framework, incluez le package System.MemoryNuGet . Pour les .NET Coreprojets, cela fonctionne hors de la boîte.
staticvoidMain(string[] args){var str ="hello world!";var span = str.AsSpan(10);// No allocation!// Outputs: d!foreach(var c in span){Console.Write(c);}Console.WriteLine();}
Réponses:
vous devrez effectuer les vérifications de longueur sinon cela générerait une erreur
la source
str = str.Remove(0,10);
Supprime les 10 premiers caractèresou
str = str.Substring(10);
Crée une sous-chaîne commençant au 11e caractère jusqu'à la fin de la chaîne.Pour vos besoins, ils devraient fonctionner de la même manière.
la source
La sous-chaîne est probablement ce que vous voulez, comme d'autres l'ont souligné. Mais juste pour ajouter une autre option au mix ...
Vous n'avez même pas besoin de vérifier la longueur à ce sujet! :) Si ses moins de 10 caractères, vous obtenez une chaîne vide.
la source
Substring
a deux méthodes de surcharge:Donc, pour ce scénario, vous pouvez utiliser la première méthode comme celle-ci ci-dessous:
Ici, la sortie est:
Si vous pouvez appliquer un codage défensif en vérifiant sa longueur.
la source
Le
Substring
a un paramètre appelé startIndex. Réglez-le en fonction de l'index auquel vous souhaitez commencer.la source
Vous pouvez supprimer le caractère en utilisant la ligne ci-dessous,
: - Vérifiez d'abord que la chaîne a suffisamment de caractères à supprimer , comme
la source
Utilisez la méthode de sous-chaîne.
la source
Vous pouvez utiliser la méthode Méthode Substring qui prend un seul paramètre, qui est l'index à partir duquel commencer.
Dans mon code ci-dessous, je traite le cas où la longueur est inférieure à votre index de départ souhaité et lorsque la longueur est égale à zéro.
la source
Pour:
Pour obtenir la chaîne résultante sans les 10 premiers caractères et une chaîne vide si la chaîne est inférieure ou égale à 10, vous pouvez utiliser:
ou
La première variante est préférée car elle ne nécessite qu'un seul paramètre de méthode.
la source
Il n'est pas nécessaire de spécifier la longueur dans la
Substring
méthode. Par conséquent:p
sera:La seule exception dont vous devez tenir compte est
ArgumentOutOfRangeException
sistartIndex
est inférieur à zéro ou supérieur à la longueur de cette instance.la source
À partir de C # 8, vous pouvez simplement utiliser Range Operator. C'est le moyen le plus efficace et le meilleur pour gérer de tels cas.
la source
C# 8
n'est pas pris en charge lors du ciblage.NET Framework
.L'appel
SubString()
alloue une nouvelle chaîne. Pour des performances optimales, vous devez éviter cette allocation supplémentaire. En commençant par,C# 7.2
vous pouvez profiter du modèle Span .Lors du ciblage
.NET Framework
, incluez le package System.MemoryNuGet
. Pour les.NET Core
projets, cela fonctionne hors de la boîte.la source