Wie entferne ich die ersten 10 Zeichen aus einer Zeichenfolge?

92

Wie ignoriere ich die ersten 10 Zeichen einer Zeichenfolge?

Eingang:

str = "hello world!";

Ausgabe:

d!
csharper
quelle
9
string.Substring (9); wo 9 ist
Startindex
Denken Sie daran, zuerst zu überprüfen, ob die Zeichenfolge mindestens 10 Zeichen enthält. Andernfalls wird eine Ausnahme angezeigt.
Jonathan
Warum wird Teilstring nicht unterstützt (startIndex, endindex)? jedes Mal müssen wir die Länge berechnen .. :-(
Sangram Nandkhile
1
@ Waqas: Eigentlich ist es str.Substring (10), der Parameter ist die Position, aus der der Teilstring extrahiert wird
Răzvan Flavius ​​Panda

Antworten:

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

Sie müssen die Längenprüfungen durchführen, da dies sonst einen Fehler auslösen würde

V4Vendetta
quelle
214

str = str.Remove(0,10); Entfernt die ersten 10 Zeichen

oder

str = str.Substring(10); Erstellt eine Teilzeichenfolge ab dem 11. Zeichen bis zum Ende der Zeichenfolge.

Für Ihre Zwecke sollten sie identisch funktionieren.

Crlanglois
quelle
16

Teilzeichenfolge ist wahrscheinlich das, was Sie wollen, wie andere betonten. Aber nur um der Mischung eine weitere Option hinzuzufügen ...

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

Sie müssen nicht einmal die Länge überprüfen! :) Wenn es weniger als 10 Zeichen sind, erhalten Sie eine leere Zeichenfolge.

UrbanEsc
quelle
Und für eine bessere Lesbarkeit können Sie "" verwenden. Es kompiliert genau das gleiche wie string.Empty in diesen Tagen.
PRMan
9

Substring hat zwei Überladungsmethoden:

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.

Für dieses Szenario können Sie die folgende Methode verwenden:

var str = "hello world!";
str = str.Substring(10);

Hier ist die Ausgabe:

d!

Wenn Sie eine defensive Codierung anwenden können, indem Sie deren Länge überprüfen.

Rousonur Jaman
quelle
5

Der Substringhat einen Parameter namens startIndex. Stellen Sie es entsprechend dem Index ein, bei dem Sie beginnen möchten.

Sascha
quelle
3

Sie können Char mit der folgenden Zeile entfernen:

: - Prüfen Sie zuerst , dass die String genug Zeichen zu entfernen hat , wie

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

Verwenden Sie die Teilzeichenfolge.

string s = "hello world";
s=s.Substring(10, s.Length-10);
Ashley John
quelle
2
löst eine Ausnahme aus, wenn der String kürzer als der Startindex ist
Răzvan Flavius ​​Panda
1

Sie können die Methode Substring verwenden, die einen einzelnen Parameter verwendet, bei dem es sich um den Index handelt, von dem aus begonnen werden soll.

In meinem Code unten beschäftige ich mich mit dem Fall, dass die Länge kleiner als Ihr gewünschter Startindex ist und wenn die Länge Null ist.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
George Duckett
quelle
Derzeit wird das letzte Zeichen aus der Zeichenfolge zurückgegeben, wenn die Zeichenfolge weniger als 10 Zeichen lang ist.
Răzvan Flavius ​​Panda
1

Zum:

var str = "hello world!";

Um die resultierende Zeichenfolge ohne die ersten 10 Zeichen und eine leere Zeichenfolge zu erhalten, wenn die Zeichenfolge kleiner oder gleich 10 ist, können Sie Folgendes verwenden:

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

oder

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

Die erste Variante wird bevorzugt, da nur ein Methodenparameter benötigt wird.

Răzvan Flavius ​​Panda
quelle
1

Es ist nicht erforderlich, die Länge in der SubstringMethode anzugeben . Deshalb:

string s = hello world;
string p = s.Substring(3);

p wird sein:

"lo world".

Die einzige Ausnahme, die Sie berücksichtigen müssen, ist, ArgumentOutOfRangeExceptionwenn sie startIndexkleiner als Null oder größer als die Länge dieser Instanz ist.

alex leo
quelle
0

Ab C # 8 können Sie einfach den Range Operator verwenden. Dies ist der effizientere und bessere Weg, um solche Fälle zu behandeln.

string AnString = "Hello World!";
AnString = AnString[10..];
Prinz Pandey
quelle
C# 8wird beim Targeting nicht unterstützt .NET Framework.
13.
0

Beim Aufrufen SubString()wird eine neue Zeichenfolge zugewiesen. Für eine optimale Leistung sollten Sie diese zusätzliche Zuordnung vermeiden. Beginnen C# 7.2Sie mit können Sie das Span- Muster nutzen.

Fügen Sie beim Targeting .NET Frameworkdas System.Memory- NuGet Paket hinzu. Bei .NET CoreProjekten funktioniert dies sofort.

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
quelle