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!

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


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.


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.


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.


6

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


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);
   }


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)));

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.


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.


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

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();
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.