Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức String.Insert() trong C#

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).
  • startIndex từ 0 đến Length (chèn ở cuối nếu = Length).
  • Ném ArgumentNullException nếu value là null.
  • Ném ArgumentOutOfRangeException nếu startIndex < 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.