Bagaimana cara menghapus 10 karakter pertama dari string?

93

Bagaimana cara mengabaikan 10 karakter pertama dari sebuah string?

Memasukkan:

str = "hello world!";

Keluaran:

d!
csharper
sumber
9
string.Substring (9); di mana 9 adalah indeks awal
Waqas
Ingatlah untuk memeriksa terlebih dahulu bahwa string tersebut memiliki setidaknya 10 karakter atau Anda akan mendapatkan pengecualian.
Jonathan
Mengapa substring tidak mendukung (startIndex, endindex)? setiap kali kita harus menghitung Panjang .. :-(
Sangram Nandkhile
1
@ Waqas: sebenarnya ini adalah str. Substring (10), parameternya adalah posisi dari mana substring mulai diekstraksi
Răzvan Flavius ​​Panda

Jawaban:

94
str = "hello world!";
str.Substring(10, str.Length-10)

Anda perlu melakukan pemeriksaan panjang jika tidak, ini akan menimbulkan kesalahan

V4Vendetta
sumber
216

str = str.Remove(0,10); Menghapus 10 karakter pertama

atau

str = str.Substring(10); Membuat substring mulai dari karakter ke-11 hingga akhir string.

Untuk tujuan Anda, mereka harus bekerja secara identik.

crlanglois
sumber
16

Substring mungkin yang Anda inginkan, seperti yang ditunjukkan orang lain. Tetapi hanya untuk menambahkan opsi lain ke dalam campuran ...

string result = string.Join(string.Empty, str.Skip(10));

Anda bahkan tidak perlu memeriksa panjangnya! :) Jika kurang dari 10 karakter, Anda mendapatkan string kosong.

UrbanEsc
sumber
Dan untuk keterbacaan yang lebih baik, Anda dapat menggunakan "". Ini mengkompilasi persis sama dengan string. Kosong hari ini.
PRMan
Ini tidak, "" membuat string baru, sementara string.Empty mereferensikan satu. Tidak terlalu penting dalam hal kinerja (maksud saya itu satu string kosong jadi ya ...) tetapi hanya ingin menunjukkannya :)
Zer0
11

Substring memiliki dua metode Overloading:

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.

Jadi untuk skenario ini, Anda dapat menggunakan metode pertama seperti di bawah ini:

var str = "hello world!";
str = str.Substring(10);

Berikut outputnya:

d!

Jika Anda dapat menerapkan pengkodean defensif dengan memeriksa panjangnya.

Rousonur Jaman
sumber
6

Ini Substringmemiliki parameter yang disebut startIndex. Setel sesuai dengan indeks tempat Anda ingin memulai.

Sascha
sumber
3

Anda Dapat Menghapus Char menggunakan Baris di bawah ini,

: - Pertama periksa bahwa String memiliki cukup banyak karakter untuk dihapus , seperti

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }
Snack'Eyes
sumber
1

Gunakan metode substring.

string s = "hello world";
s=s.Substring(10, s.Length-10);
Ashley John
sumber
2
melempar pengecualian jika string lebih pendek dari indeks awal
Răzvan Flavius ​​Panda
1

Anda dapat menggunakan metode Metode substring yang mengambil satu parameter, yang merupakan indeks untuk memulai.

Dalam kode saya di bawah ini, saya menangani kasus itu panjangnya kurang dari indeks awal yang Anda inginkan dan ketika panjangnya nol.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
George Duckett
sumber
saat ini ia mengembalikan karakter terakhir dari string jika string kurang dari 10 karakter.
Răzvan Flavius ​​Panda
1

Untuk:

var str = "hello world!";

Untuk mendapatkan string yang dihasilkan tanpa 10 karakter pertama dan string kosong jika string kurang atau sama panjangnya dengan 10 Anda dapat menggunakan:

var result = str.Length <= 10 ? "" : str.Substring(10);

atau

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

Varian pertama lebih disukai karena hanya membutuhkan satu parameter metode.

Răzvan Flavius ​​Panda
sumber
1

Tidak perlu menentukan panjang ke dalam Substringmetode. Karena itu:

string s = hello world;
string p = s.Substring(3);

p akan:

"lo dunia".

Satu-satunya pengecualian yang perlu Anda penuhi adalah ArgumentOutOfRangeExceptionjika startIndexkurang dari nol atau lebih besar dari panjang instance ini.

alex leo
sumber
0

Mulai dari C # 8, Anda cukup menggunakan Range Operator. Ini cara yang lebih efisien dan lebih baik untuk menangani kasus seperti itu.

string AnString = "Hello World!";
AnString = AnString[10..];
Pangeran Pandey
sumber
C# 8tidak didukung saat menargetkan .NET Framework.
l33t
0

Memanggil SubString()mengalokasikan string baru. Untuk kinerja yang optimal, Anda harus menghindari alokasi ekstra itu. Dimulai dengan C# 7.2Anda dapat memanfaatkan Span pola .

Saat menargetkan .NET Framework, sertakan paket System.Memory NuGet . Untuk .NET Coreproyek ini berhasil di luar kotak.

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();
}
l33t
sumber