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

Cách thay thế ký tự tại vị trí cụ thể (index) trong chuỗi JavaScript?

Chuỗi (String) trong JavaScript là bất biến (immutable) — không thể sửa trực tiếp ký tự tại index. Phải tạo chuỗi mới.

Cách 1: substring + concat (cách gốc)

<!DOCTYPE html>
<html>
<body>
    <script>
        var str = "cric";
        document.write("Gốc: " + str + "<br>"); // "cric"
        
        var index = 3;
        // Lấy phần trước index + ký tự mới + phần sau index+1
        str = str.substring(0, index) + 'x' + str.substring(index + 1);
        
        document.write("Mới: " + str); // "crix"
    </script>
</body>
</html>

Cách 2: split → sửa → join (dễ đọc)

function replaceAt(str, index, char) {
    const arr = str.split('');
    arr[index] = char;
    return arr.join('');
}

replaceAt("cric", 3, 'x'); // "crix"

Cách 3: slice (hiệu năng tốt hơn substring)

function replaceAt(str, index, char) {
    return str.slice(0, index) + char + str.slice(index + 1);
}

Cách 4: Array.from + join (hỗ trợ Unicode tốt)

function replaceAt(str, index, char) {
    return Array.from(str).map((c, i) => i === index ? char : c).join('');
}

So sánh:

CáchƯu điểmNhược điểm
slice + concatNhanh, ít bộ nhớKhó đọc chút
split/joinDễ hiểuTạo mảng trung gian
Array.fromHỗ trợ Unicode (emoji, surrogate pairs)Chậm hơn

Lưu ý:

  • Index ngoài phạm vi: slice an toàn (trả về ""), split không lỗi nhưng không thay đổi.
  • String immutable — luôn trả về chuỗi mới.
  • Để thay thế tất cả: str.split(old).join(new) hoặc str.replaceAll(old, new) (ES2021).