Заменить символ в определенной позиции в текстовой области - PullRequest
1 голос
/ 21 февраля 2010

возможно ли заменить символ в определенной позиции в текстовой области или текстовом поле? Я могу определить положение с помощью indexOf (), но, зная это, как я могу фактически заменить этот конкретный символ?

Ответы [ 4 ]

3 голосов
/ 21 февраля 2010
<html>
<head>
<script>
function modText()
{
 var tb = document.getElementById("mtb");
 var indexToReplace = 1;
 var stringToPutIn= "!";
 var temp = tb.value;
 var startString = temp.substr(0, indexToReplace);
 var endString = temp.substring(indexToReplace+1);
 tb.value = startString+stringToPutIn+endString;
}
</script>
</head>
<body>
<input type="text" id="mtb" /><br />
<input type="button" onclick="modText();">
</body>
</html>

Функция замены НЕ будет работать, поскольку перед буквой, которую вы хотите заменить, может стоять та же самая буква.

Обратите внимание, что вышеуказанная функция работает, только если вы заменяете один и только один символ.

2 голосов
/ 22 февраля 2010

Просто используйте встроенные методы строк JavaScript. Предполагая, что у вас есть текстовая область в переменной textArea:

var textArea = document.getElementById("yourTextArea");

... следующее создает замечательную, универсальную, многократно используемую функцию сращивания строк, аналогичную Array splice методу , который затем можно использовать для обновления значения текстовой области:

function spliceString(str, start, count, stringToInsert) {
  return str.slice(0, start) + stringToInsert + str.slice(start + count);
}

textArea.value = spliceString(textArea.value, charIndex, 1, "**NEW BIT**");

Альтернативой может быть создание метода сращивания всех строк путем увеличения прототипа String:

String.prototype.splice = function(start, count, stringToInsert) {
  return this.slice(0, start) + stringToInsert + this.slice(start + count);
};

textArea.value = textArea.value.splice(charIndex, 1, "**NEW BIT**");
1 голос
/ 21 февраля 2010

Для этого можно использовать substr или substring (обратите внимание на различную семантику второго параметра):

var str = 'foobar';
alert(str.substr(3, 3));    // bar
alert(str.substring(3, 6)); // bar
0 голосов
/ 21 февраля 2010

Вы можете сделать что-то подобное, используя replace

<input id="myTxtbox" type="textbox">

<script type="text/javascript">
    var txtbox = document.getElementByID("myTxtbox");
    document.write(txtbox.value.replace("To Replace", "With This"));
</script> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...