Aby zwiększyć czytelność, możesz użyć „”. Kompiluje się dokładnie tak samo jak string - obecnie jest pusty.
PRMan
Nie, "" tworzy nowy ciąg, podczas gdy string.Empty odwołuje się do jednego. To nie ma znaczenia pod względem wydajności (mam na myśli jeden pusty ciąg, więc tak ...), ale chciałem tylko zwrócić uwagę :)
publicstringSubstring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.publicstringSubstring(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ść.
Nie ma potrzeby określania długości w Substringmetodzie. 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, ArgumentOutOfRangeExceptiongdy
startIndexjest mniejsza od zera lub większa niż długość tego wystąpienia.
C# 8nie jest obsługiwana podczas kierowania .NET Framework.
l33t
0
Wywołanie SubString()przydziela nowy ciąg. Aby uzyskać optymalną wydajność, należy unikać tego dodatkowego przydziału. Zaczynając od C# 7.2możesz skorzystać ze wzoru Span .
Podczas kierowania .NET Frameworkuwzględnij pakiet System.MemoryNuGet . W przypadku .NET Coreprojektów działa to po wyjęciu z pudełka.
staticvoidMain(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();
}
Odpowiedzi:
str = "hello world!"; str.Substring(10, str.Length-10)
będziesz musiał sprawdzić długość, inaczej spowodowałoby to błąd
źródło
str = str.Remove(0,10);
Usuwa pierwsze 10 znakówlub
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.
źródło
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.
źródło
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:
Jeśli możesz zastosować kodowanie obronne, sprawdzając jego długość.
źródło
Substring
Ma parametr o nazwie startIndex. Ustaw go zgodnie z indeksem, od którego chcesz zacząć.źródło
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); }
źródło
Użyj metody podciągowej.
string s = "hello world"; s=s.Substring(10, s.Length-10);
źródło
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)));
źródło
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.
źródło
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:Jedynym wyjątkiem, na który musisz zwrócić uwagę, jest sytuacja,
ArgumentOutOfRangeException
gdystartIndex
jest mniejsza od zera lub większa niż długość tego wystąpienia.źródło
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..];
źródło
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 odC# 7.2
możesz skorzystać ze wzoru Span .Podczas kierowania
.NET Framework
uwzględnij pakiet System.MemoryNuGet
. 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(); }
źródło