7

Как заменить символ по заданному индексу в JavaScript?

13

У меня есть строка, например, Hello world, и мне нужно заменить символ по индексу 3. Как я могу заменить символ, указав индекс?

Вот пример кода:

var str = "hello world";

Мне нужно что-то вроде:

str.replaceAt(3, "H");

Как можно реализовать такую функциональность в JavaScript?

5 ответ(ов)

8

В JavaScript строки являются неизменяемыми, что означает, что лучший способ изменить строку — это создать новую строку с изменённым содержимым и присвоить переменной ссылку на неё.

Вам нужно будет самостоятельно определить функцию replaceAt(), вот так:

String.prototype.replaceAt = function(index, replacement) {
    return this.substring(0, index) + replacement + this.substring(index + replacement.length);
}

И использовать её можно следующим образом:

var hello = "Hello World";
alert(hello.replaceAt(2, "!!")); // He!!o World

Таким образом, вы замените символ в строке на новый, создав при этом новую строку.

1

В JavaScript действительно нет встроенной функции replaceAt, но вы можете использовать следующий код, чтобы заменить любой символ в строке по указанной позиции:

function rep() {
    var str = 'Hello World';
    str = setCharAt(str, 4, 'a');
    alert(str);
}

function setCharAt(str, index, chr) {
    if (index > str.length - 1) return str;
    return str.substring(0, index) + chr + str.substring(index + 1);
}

В этом примере мы определяем функцию setCharAt, которая принимает строку, индекс символа, который нужно заменить, и новый символ. Если индекс превышает длину строки, функция просто возвращает оригинальную строку. В противном случае она создает новую строку, заменяя указанный символ.

Вы можете использовать этот код, добавив кнопку в ваш HTML:

<button onclick="rep();">click</button>

Таким образом, при нажатии на кнопку будет вызвана функция rep, которая заменит символ в строке 'Hello World' на 'a' на позиции 4, и выведет измененную строку в алерте.

1

Вы не можете изменить символ в строке напрямую, так как строки в JavaScript являются неизменяемыми. Вместо этого вы можете взять символы до и после заданной позиции и объединить их в новую строку. Например:

var s = "Hello world";
var index = 3;
s = s.substring(0, index) + 'x' + s.substring(index + 1);

В этом коде мы используем метод substring, чтобы извлечь часть строки до указанного индекса и часть строки после него, а затем соединяем их с новым символом 'x'.

0

Данный код на JavaScript выполняет следующее:

  1. str.split(''); — строка str разбивается на массив символов. Например, если str было равно 'hello', то после выполнения этой команды массив будет выглядеть так: ['h', 'e', 'l', 'l', 'o'].

  2. str[3] = 'h'; — в массиве символов изменяется четвёртый элемент (индекс 3, так как индексация начинается с нуля) на букву 'h'. В нашем примере массив теперь будет выглядеть как ['h', 'e', 'l', 'h', 'o'].

  3. str.join(''); — массив символов объединяется обратно в строку без разделителей, что в нашем примере даст строку 'helho'.

Итогом выполнения этого кода будет строка 'helho'.

Если у вас есть ещё вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать!

0

EDIT: Элегантное решение, хотя и рекомендуется использовать его только для строк небольшого размера, заключается в работе с массивами:

String.prototype.replaceAt = function(index, char) {
    var a = this.split("");
    a[index] = char;
    return a.join("");
}

Запустите этот фрагмент кода:

String.prototype.replaceAt = function(index, char) {
    var a = this.split("");
    a[index] = char;
    return a.join("");
}

var str = "hello world";
str = str.replaceAt(3, "#");

document.write(str);

Этот код заменяет символ в строке str на указанный в позиции index. В данном примере символ на третьей позиции (индексация с нуля) будет заменён на #, и результат будет выведен на экран как hel#o world.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь