如何在Javascript中更改字符串中的特定字符[重复]
Posted
技术标签:
【中文标题】如何在Javascript中更改字符串中的特定字符[重复]【英文标题】:How to change the specific character in a string in Javascript [duplicate] 【发布时间】:2016-01-08 10:06:51 【问题描述】:我在输入变量中有这个字符串,如下所示: var input = "javascript";
我想将此字符串更改为“j4v4sr1pt”,方法是将 a 替换为 4,将 i 替换为 1。
我试图做这样的事情,但对我不起作用,我是 JavaScript 新手。有人能告诉我我在这里做错了什么吗?感谢提前投反对票:D
<script>
var input = "javascript";
var output= "";
for ( var i=0;i<input.length ; i++)
if ( input[i] == "a")
output[i] = "4";
else if ( input[i] == "i")
output[i] ="1";
else
output[i]=input[i];
// end forloop
</script>
【问题讨论】:
output = input.replace(/a/g, '4')
等?
请查看我的回答,如果对你有用,请点击下面的勾。
这能回答你的问题吗? How do I replace a character at a particular index in JavaScript? 和 Replace multiple characters in one replace call
【参考方案1】:
在 JavaScript 中,字符串是不可变的,这意味着它们不能原地更改。即使您可以读取字符串的每个字符,但您无法对其进行写入。
你可以用正则表达式替换来解决问题:
output = input.replace(/a/g, '4').replace(/i/g, '1');
或者你可以通过将output
从一个字符串更改为一个数组,然后将它连接成一个字符串来解决它:
var input = "javascript";
var output = []; //change this
for (var i = 0; i < input.length; i++)
if (input[i] == "a")
output[i] = "4";
else if (input[i] == "i")
output[i] = "1";
else
output[i] = input[i];
// end forloop
output= output.join(''); //change array to string
console.log(output);
【讨论】:
【参考方案2】:尝试.replace()
方法,如下所示:
<script>
var input = "javascript";
var output = input.replace("a", "4", "g").replace("i", "1", "g");
</script>
编辑:在 replace 方法中添加了 g
标志以替换所有匹配项,而不仅仅是第一个匹配项。
【讨论】:
感谢您的回答,当我运行此代码时,输出是:j4vascr1pt 而不是 j4v4sc1pt,它不会改变第二个 'a' 字符,你能告诉我为什么会这样吗? @Duke 我更新了帖子,现在应该可以使用了。我在最后添加了一个g
标志。 g
标志表示它是全局的,这意味着它将替换所有而不只是第一个。
ty for answer 它确实运行良好,但我需要带有 for 循环的脚本。
@Duke 当然,没问题。以上是关于如何在Javascript中更改字符串中的特定字符[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何知道字符串以javascript中的特定字符开始/结束? [复制]