Wie ignoriere ich die ersten 10 Zeichen einer Zeichenfolge?
Eingang:
str = "hello world!";
Ausgabe:
d!
Wie ignoriere ich die ersten 10 Zeichen einer Zeichenfolge?
Eingang:
str = "hello world!";
Ausgabe:
d!
Antworten:
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
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.
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.
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.
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);
}
Verwenden Sie die Teilzeichenfolge.
string s = "hello world";
s=s.Substring(10, s.Length-10);
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)));
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.
Es ist nicht erforderlich, die Länge in der Substring
Methode 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, ArgumentOutOfRangeException
wenn sie
startIndex
kleiner als Null oder größer als die Länge dieser Instanz ist.
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# 8
wird beim Targeting nicht unterstützt .NET Framework
.
Beim Aufrufen SubString()
wird eine neue Zeichenfolge zugewiesen. Für eine optimale Leistung sollten Sie diese zusätzliche Zuordnung vermeiden. Beginnen C# 7.2
Sie mit können Sie das Span- Muster nutzen.
Fügen Sie beim Targeting .NET Framework
das System.Memory- NuGet
Paket hinzu. Bei .NET Core
Projekten 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();
}