Tôi cần loại bỏ sự xuất hiện đầu tiên (và CHỈ là đầu tiên) của một chuỗi từ một chuỗi khác.C# - Cách đơn giản nhất để loại bỏ sự xuất hiện đầu tiên của chuỗi con từ một chuỗi khác
Dưới đây là ví dụ thay thế chuỗi "\\Iteration"
. Đây:
ProjectName\\Iteration\\Release1\\Iteration1
sẽ trở thành này:
ProjectName\\Release1\\Iteration1
Dưới đây một số mã mà thực hiện điều này:
const string removeString = "\\Iteration";
int index = sourceString.IndexOf(removeString);
int length = removeString.Length;
String startOfString = sourceString.Substring(0, index);
String endOfString = sourceString.Substring(index + length);
String cleanPath = startOfString + endOfString;
Đó có vẻ như rất nhiều mã.
Vì vậy, câu hỏi của tôi là: Có cách nào gọn gàng hơn/dễ đọc hơn/ngắn gọn hơn để thực hiện việc này không?
Câu trả lời này có thể vi phạm các chuỗi liên quan đến các ký tự không phải ASCII. Ví dụ, dưới văn hóa en-US, 'æ' và' ae' được coi là bằng nhau. Cố gắng loại bỏ 'paedia' khỏi' Encyclopædia' sẽ ném một 'ArgumentOutOfRangeException', vì bạn đang cố gắng loại bỏ 6 ký tự khi chuỗi con phù hợp chỉ chứa 5. – Douglas
Chúng ta có thể sửa đổi nó như sau:' sourceString.IndexOf (removeString, StringComparison. Ordinal) 'để tránh ngoại lệ. –