如何在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中的特定字符开始/结束? [复制]

如何替换文件中的特定字符

如何更改 lambda 表达式中的字符串变量?

如何在 JavaScript/jQuery 中查找数组是不是包含特定字符串?

c_cpp 更改特定字符串中的char