Bir dizenin ilk 10 karakteri nasıl göz ardı edilir?
Giriş:
str = "hello world!";
Çıktı:
d!
Bir dizenin ilk 10 karakteri nasıl göz ardı edilir?
Giriş:
str = "hello world!";
Çıktı:
d!
Yanıtlar:
str = "hello world!";
str.Substring(10, str.Length-10)
uzunluk kontrollerini yapmanız gerekecek, aksi takdirde bu bir hataya neden olabilir
str = str.Remove(0,10);
İlk 10 karakteri kaldırır
veya
str = str.Substring(10);
Dizenin 11. karakterinden başlayarak sonuna kadar bir alt dize oluşturur.
Sizin amaçlarınız için aynı şekilde çalışmalıdırlar.
Başkalarının da belirttiği gibi, muhtemelen istediğiniz şey alt dizedir. Ancak karışıma başka bir seçenek eklemek için ...
string result = string.Join(string.Empty, str.Skip(10));
Bunun uzunluğunu kontrol etmenize bile gerek yok! :) 10 karakterden küçükse, boş bir dize alırsınız.
Substring
iki Aşırı Yükleme yöntemine sahiptir:
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.
Dolayısıyla bu senaryo için aşağıdaki gibi ilk yöntemi kullanabilirsiniz:
var str = "hello world!";
str = str.Substring(10);
İşte çıktı:
d!
Uzunluğunu kontrol ederek savunma kodlaması uygulayabilirsiniz.
Aşağıdaki Satırı kullanarak Char Kaldırabilirsiniz,
: - dize kaldırmak için yeterli karakter vardır Yani ilk check gibi
string temp="Hello Stack overflow";
if(temp.Length>10)
{
string textIWant = temp.Remove(0, 10);
}
Alt dize yöntemini kullanın.
string s = "hello world";
s=s.Substring(10, s.Length-10);
Başlamak için dizin olan tek bir parametre alan Substring yöntemini kullanabilirsiniz .
Aşağıdaki kodumda, uzunluğun istediğiniz başlangıç indeksinden daha az olduğu ve uzunluğun sıfır olduğu durumla ilgileniyorum.
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
İçin:
var str = "hello world!";
Sonuçta elde edilen dizeyi ilk 10 karakter olmadan ve dize uzunluğu 10'dan daha az veya ona eşitse boş bir dize elde etmek için şunu kullanabilirsiniz:
var result = str.Length <= 10 ? "" : str.Substring(10);
veya
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
İlk değişken, yalnızca bir yöntem parametresine ihtiyaç duyduğu için tercih edilir.
Substring
Yöntemde uzunluğun belirtilmesine gerek yoktur . Bu nedenle:
string s = hello world;
string p = s.Substring(3);
p
olacak:
"lo world".
Olduğu için size hitap gereken tek istisnası ArgumentOutOfRangeException
ise
startIndex
bu durumda uzunluğundan daha az sıfır veya daha fazladır.
C # 8'den başlayarak, Range Operator'ü kullanabilirsiniz. Bu tür durumlarla başa çıkmanın daha verimli ve daha iyi yolu.
string AnString = "Hello World!";
AnString = AnString[10..];
C# 8
hedefleme sırasında desteklenmez .NET Framework
.
Çağrı SubString()
, yeni bir dizi tahsis eder. En iyi performans için, bu fazladan ayırmadan kaçınmalısınız. İle başlayarak C# 7.2
size yararlanabilirsiniz Açıklık deseni.
Hedeflerken .NET Framework
içerir System.Memory NuGet
paketi. İçin .NET Core
projelerin bu kutunun çalışır.
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();
}