Comment supprimer les 10 premiers caractères d'une chaîne?

93

Comment ignorer les 10 premiers caractères d'une chaîne?

Contribution:

str = "hello world!";

Production:

d!
csharper
la source
9
string.Substring (9); où 9 est l'index de départ
Waqas
N'oubliez pas de vérifier d'abord que la chaîne a au moins 10 caractères ou vous obtiendrez une exception.
Jonathan
Pourquoi la sous-chaîne ne prend pas en charge (startIndex, endindex)? chaque fois que nous devons calculer la longueur .. :-(
Sangram Nandkhile
1
@Waqas: en fait c'est str.Substring (10), le paramètre étant la position à partir de laquelle la sous-chaîne commence à être extraite
Răzvan Flavius ​​Panda

Réponses:

94
str = "hello world!";
str.Substring(10, str.Length-10)

vous devrez effectuer les vérifications de longueur sinon cela générerait une erreur

V4Vendetta
la source
215

str = str.Remove(0,10); Supprime les 10 premiers caractères

ou

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.

Crlanglois
la source
16

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 ...

string result = string.Join(string.Empty, str.Skip(10));

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.

UrbanEsc
la source
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:

public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.

public string Substring(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.

Rousonur Jaman
la source
6

Le Substringa un paramètre appelé startIndex. Réglez-le en fonction de l'index auquel vous souhaitez commencer.

Sascha
la source
3

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

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }
Snack'Eyes
la source
1

Utilisez la méthode de sous-chaîne.

string s = "hello world";
s=s.Substring(10, s.Length-10);
Ashley John
la source
2
lance une exception si la chaîne est plus courte que l'index de départ
Răzvan Flavius ​​Panda
1

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.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
George Duckett
la source
actuellement, il renvoie le dernier caractère de la chaîne si la chaîne est inférieure à 10 caractères.
Răzvan Flavius ​​Panda
1

Pour:

var str = "hello world!";

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:

var result = str.Length <= 10 ? "" : str.Substring(10);

ou

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

La première variante est préférée car elle ne nécessite qu'un seul paramètre de méthode.

Răzvan Flavius ​​Panda
la source
1

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.

alex leo
la source
0

À 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.

string AnString = "Hello World!";
AnString = AnString[10..];
Prince Pandey
la source
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.Memory NuGet . Pour les .NET Coreprojets, cela fonctionne hors de la boîte.

static void Main(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();
}
l33t
la source