【问题标题】:How to change the specific character in a string in Javascript [duplicate]如何在Javascript中更改字符串中的特定字符[重复]
【发布时间】: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>

【问题讨论】:

标签: javascript jquery


【解决方案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 当然,没问题。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2014-09-28
    • 2020-07-11
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多