Jak zignorować pierwsze 10 znaków ciągu?
Wejście:
str = "hello world!";
Wynik:
d!
Jak zignorować pierwsze 10 znaków ciągu?
Wejście:
str = "hello world!";
Wynik:
d!
Odpowiedzi:
str = "hello world!";
str.Substring(10, str.Length-10)
będziesz musiał sprawdzić długość, inaczej spowodowałoby to błąd
str = str.Remove(0,10);
Usuwa pierwsze 10 znaków
lub
str = str.Substring(10);
Tworzy podciąg zaczynający się od jedenastego znaku do końca ciągu.
Dla twoich celów powinny działać identycznie.
Podciąg jest prawdopodobnie tym, czego chcesz, jak wskazywali inni. Ale żeby dodać kolejną opcję do miksu ...
string result = string.Join(string.Empty, str.Skip(10));
Nie musisz nawet sprawdzać długości tego! :) Jeśli jest mniej niż 10 znaków, otrzymasz pusty łańcuch.
Substring
ma dwie metody przeciążania:
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.
W tym scenariuszu możesz użyć pierwszej metody, takiej jak ta poniżej:
var str = "hello world!";
str = str.Substring(10);
Oto wynik:
d!
Jeśli możesz zastosować kodowanie obronne, sprawdzając jego długość.
Możesz usunąć znak za pomocą poniższej linii,
: - Najpierw sprawdź, czy String ma wystarczającą liczbę znaków do usunięcia , na przykład
string temp="Hello Stack overflow";
if(temp.Length>10)
{
string textIWant = temp.Remove(0, 10);
}
Użyj metody podciągowej.
string s = "hello world";
s=s.Substring(10, s.Length-10);
Możesz użyć metody Substring , która przyjmuje pojedynczy parametr, czyli indeks, od którego należy zacząć.
W moim kodzie poniżej zajmuję się przypadkiem, gdy długość jest mniejsza niż żądany indeks początkowy i gdy długość wynosi zero.
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
Dla:
var str = "hello world!";
Aby otrzymać wynikowy ciąg bez pierwszych 10 znaków i pusty ciąg, jeśli długość ciągu jest mniejsza lub równa 10, możesz użyć:
var result = str.Length <= 10 ? "" : str.Substring(10);
lub
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
Preferowany jest pierwszy wariant, ponieważ wymaga tylko jednego parametru metody.
Nie ma potrzeby określania długości w Substring
metodzie. W związku z tym:
string s = hello world;
string p = s.Substring(3);
p
będzie:
„lo świat”.
Jedynym wyjątkiem, na który musisz zwrócić uwagę, jest sytuacja, ArgumentOutOfRangeException
gdy
startIndex
jest mniejsza od zera lub większa niż długość tego wystąpienia.
Począwszy od C # 8, możesz po prostu użyć operatora zakresu. To wydajniejszy i lepszy sposób na załatwienie takich spraw.
string AnString = "Hello World!";
AnString = AnString[10..];
C# 8
nie jest obsługiwana podczas kierowania .NET Framework
.
Wywołanie SubString()
przydziela nowy ciąg. Aby uzyskać optymalną wydajność, należy unikać tego dodatkowego przydziału. Zaczynając od C# 7.2
możesz skorzystać ze wzoru Span .
Podczas kierowania .NET Framework
uwzględnij pakiet System.Memory NuGet
. W przypadku .NET Core
projektów działa to po wyjęciu z pudełka.
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();
}