替换textarea中特定位置的字符

时间:2010-02-21 17:04:47

标签: javascript string

是否可以替换textarea或textbox中特定位置的字符?我可以使用indexOf()来计算位置但是知道这个我怎样才能真正替换那个特定字符?

4 个答案:

答案 0 :(得分:3)

<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>

替换功能不起作用,因为您可能在要替换的字母前面有相同的字母。

请注意,上述功能仅在您替换一个且仅替换一个字符时才有效。

答案 1 :(得分:2)

只需使用JavaScript字符串的内置方法即可。假设您在变量textArea中有一个文本区域:

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

...以下创建一个类似于Array's splice method的漂亮,通用,可重用的字符串拼接功能,然后您可以使用它来更新textarea的值:

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**");

答案 2 :(得分:1)

您可以使用substrsubstring来执行此操作(请注意第二个参数的不同语义):

var str = 'foobar';
alert(str.substr(3, 3));    // bar
alert(str.substring(3, 6)); // bar

答案 3 :(得分:0)

您可以使用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>