Phương thức String.Insert() trong C# được dùng để trả về một chuỗi mới trong đó một chuỗi được chỉ định được chèn vào vị trí chỉ mục (index) xác định trong instance hiện tại.
Cú pháp
public string Insert(int startIndex, string value);
startIndex: Vị trí chỉ mục từ 0 nơi chèn chuỗi.value: Chuỗi cần chèn.
Trả về: Chuỗi mới với value được chèn tại startIndex.
Ví dụ 1: Chèn khoảng trắng vào giữa tên
using System;
public class Demo
{
public static void Main()
{
string str = "JohnWick";
Console.WriteLine("Chuỗi ban đầu = " + str);
// Chèn khoảng trắng tại chỉ mục 5 (sau "JohnW")
string res = str.Insert(5, " ");
Console.WriteLine("Chuỗi sau chèn = " + res);
}
}
Kết quả
Chuỗi ban đầu = JohnWick Chuỗi sau chèn = JohnW ick
Ví dụ 2: Chèn cụm từ vào câu
using System;
public class Demo
{
public static void Main()
{
string str = "WelcomeJacob";
Console.WriteLine("Chuỗi ban đầu = " + str);
// Chèn " here, " tại chỉ mục 7 (sau "Welcome")
string res = str.Insert(7, " here, ");
Console.WriteLine("Chuỗi sau chèn = " + res);
}
}
Kết quả
Chuỗi ban đầu = WelcomeJacob Chuỗi sau chèn = Welcome here, Jacob
Đặc điểm quan trọng
- Trả về chuỗi mới, chuỗi gốc không thay đổi (string bất biến).
startIndextừ 0 đếnLength(chèn ở cuối nếu = Length).- Ném
ArgumentNullExceptionnếuvaluelà null. - Ném
ArgumentOutOfRangeExceptionnếustartIndex< 0 hoặc > Length.
Ví dụ: Chèn nhiều vị trí (chuỗi mới mỗi lần)
string s = "ABC"; s = s.Insert(1, "-"); // A-BC s = s.Insert(3, "-"); // A-B-C Console.WriteLine(s); // A-B-C
So sánh với StringBuilder.Insert
| Đặc điểm | String.Insert |
StringBuilder.Insert |
|---|---|---|
| Tạo đối tượng mới | Có (mỗi lần) | Không (sửa tại chỗ) |
| Hiệu suất lặp nhiều lần | Kém (O(n²)) | Tốt (O(n)) |
| Thread-safe | Có (bất biến) | Không |
Khi nào dùng String.Insert?
- Chèn ít lần, chuỗi nhỏ.
- Cần bất biến (immutable) cho an toàn luồng.
- Code đơn giản, dễ đọc.
Khi nào dùng StringBuilder.Insert?
- Chèn nhiều lần trong vòng lặp.
- Xử lý chuỗi lớn, yêu cầu hiệu suất.