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!

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


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.


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.


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.


5

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


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


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

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.


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.


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

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();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.