Làm cách nào để xóa 10 ký tự đầu tiên khỏi một chuỗi?


92

Làm thế nào để bỏ qua 10 ký tự đầu tiên của một chuỗi?

Đầu vào:

str = "hello world!";

Đầu ra:

d!

9
string.Substring (9); trong đó 9 là chỉ mục bắt đầu
Waqas

Trước tiên, hãy nhớ kiểm tra xem chuỗi có ít nhất 10 ký tự hoặc bạn sẽ nhận được một ngoại lệ.
Jonathan

Tại sao chuỗi con không hỗ trợ (startIndex, endindex)? mỗi lần chúng tôi phải tính toán Chiều dài .. :-(
Sangram Nandkhile

1
@Waqas: thực sự nó str.Substring (10), tham số là vị trí mà từ đó các chuỗi con bắt đầu được chiết xuất
Răzvan Flavius Panda

Câu trả lời:


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

bạn sẽ cần thực hiện kiểm tra độ dài nếu không điều này sẽ gây ra lỗi


214

str = str.Remove(0,10); Xóa 10 ký tự đầu tiên

hoặc là

str = str.Substring(10); Tạo một chuỗi con bắt đầu từ ký tự thứ 11 đến cuối chuỗi.

Đối với mục đích của bạn, chúng sẽ hoạt động giống nhau.


16

Chuỗi con có thể là những gì bạn muốn, như những người khác đã chỉ ra. Nhưng chỉ để thêm một tùy chọn khác vào hỗn hợp ...

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

Bạn thậm chí không cần phải kiểm tra độ dài trên này! :) Nếu nó ít hơn 10 ký tự, bạn sẽ nhận được một chuỗi rỗng.


Và để dễ đọc hơn, bạn có thể sử dụng "". Nó biên dịch giống hệt như string.Empty ngày nay.
PRMan

10

Substring có hai phương pháp Nạp chồng:

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.

Vì vậy, đối với trường hợp này, bạn có thể sử dụng phương pháp đầu tiên như sau:

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

Đây là kết quả đầu ra:

d!

Nếu bạn có thể áp dụng mã hóa phòng thủ bằng cách kiểm tra độ dài của nó.


5

Substringmột tham số gọi là startIndex. Đặt nó theo chỉ số bạn muốn bắt đầu.


3

Bạn có thể loại bỏ Char bằng cách sử dụng Dòng dưới đây,

: - Đầu tiên hãy kiểm tra xem Chuỗi có đủ ký tự để loại bỏ , như

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

1

Sử dụng phương pháp chuỗi con.

string s = "hello world";
s=s.Substring(10, s.Length-10);

2
ném ngoại lệ nếu chuỗi ngắn hơn chỉ số bắt đầu
Răzvan Flavius Panda

1

Bạn có thể sử dụng phương thức Substring method nhận một tham số duy nhất, là chỉ mục để bắt đầu.

Trong đoạn mã dưới đây, tôi giải quyết trường hợp độ dài nhỏ hơn chỉ mục bắt đầu mong muốn của bạn và khi độ dài bằng 0.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

hiện tại nó trả về ký tự cuối cùng từ chuỗi nếu chuỗi dài hơn 10 ký tự.
Răzvan Flavius ​​Panda,

1

Đối với:

var str = "hello world!";

Để nhận được chuỗi kết quả không có 10 ký tự đầu tiên và một chuỗi trống nếu chuỗi có độ dài nhỏ hơn hoặc bằng 10, bạn có thể sử dụng:

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

hoặc là

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

Biến thể đầu tiên được ưu tiên vì nó chỉ cần một tham số phương thức.


1

Không cần chỉ định độ dài vào Substringphương thức. Vì thế:

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

p sẽ là:

"thế giới".

Ngoại lệ duy nhất bạn cần phục vụ là ArgumentOutOfRangeExceptionnếu startIndexnhỏ hơn 0 hoặc lớn hơn độ dài của trường hợp này.


0

Bắt đầu từ C # 8, bạn chỉ có thể sử dụng Toán tử Phạm vi. Đó là cách hiệu quả hơn và tốt hơn để xử lý những trường hợp như vậy.

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8không được hỗ trợ khi nhắm mục tiêu .NET Framework.
l33t

0

Gọi SubString()phân bổ một chuỗi mới. Để có hiệu suất tối ưu, bạn nên tránh phân bổ thêm đó. Bắt đầu với C# 7.2bạn có thể tận dụng mô hình Span .

Khi nhắm mục tiêu .NET Framework, hãy bao gồm gói System.Memory NuGet . Đối với .NET Corecác dự án, điều này hoạt động hiệu quả.

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();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.