Javascript 从现有字符串创建字符串,其中每个字符都用*表示,只有空格用空格表示

Javascript 从现有字符串创建字符串,其中每个字符都用*表示,只有空格用空格表示,javascript,jquery,Javascript,Jquery,我想从现有字符串生成一个新字符串。javascript在新生成的字符串中,除“”(空格)外,所有字符都将由“*”表示。 例如,如果现有字符串为 “隐藏我” 然后,将生成新的生成字符串 “******” 我试过这样做,但不起作用 function hiddenData() { var size = word.length; for (var i = 0; i <= size; i++) { if (word[i] == ' ') { hiddenStr[i] = '

我想从现有字符串生成一个新字符串。
javascript
在新生成的字符串中,除“”(空格)外,所有字符都将由“*”表示。 例如,如果现有字符串为


“隐藏我”

然后,将生成新的生成字符串


“******”

我试过这样做,但不起作用

 function hiddenData()
{
var size = word.length;
for (var i = 0; i <= size; i++)
{
    if (word[i] == ' ') {
        hiddenStr[i] = ' ';
    }
    else
    {
        hiddenStr[i] = '_';
    }
}
hiddenStr[i] = '\0';
}
函数hiddenData()
{
变量大小=单词长度;

对于(var i=0;i使用正则表达式

alert(word.replace(/[^ ]/g, '*'));

使用正则表达式

alert(word.replace(/[^ ]/g, '*'));
使用
replace()
和正则表达式

var str=word.replace(/[^ ]/g, '*');
使用
replace()
和正则表达式

var str=word.replace(/[^ ]/g, '*');

该代码有两个主要问题。1.您的
for
循环的条件不正确,它应该是
i
;当
i==size
时,您将跳过字符串的最后一个字符并得到错误。2.变量
i
仅在
for
循环的范围内,您不能在行中使用它之后:
hiddenStr[i]='\0';
@AnthonyGrist JS中还没有块作用域变量(请参见
let
关键字),
i
完全可用。访问太大的
i
不会出错,它只会返回
未定义的
。你的函数应该接收
word
作为参数,并返回
hiddenStr
作为结果,而不是神奇地改变一些全局变量。@Prinzhorn啊,你说得对。我太习惯于用h Java,出于某种原因,今天决定JavaScript以同样的方式工作……该代码有两个主要问题。1.
for
循环的条件不正确,它应该是
i
;当
i==size
时,您将跳过字符串的最后一个字符并得到一个错误。2.变量
i
i它只在
for
循环的作用域中,不能在其后的行中使用它:
hiddenStr[i]='\0';
@AnthonyGrist JS中还没有块作用域变量(请参见
let
关键字),
i
完全可用。访问太大的
i
不会出错,它只会返回
未定义的
。你的函数应该接收
word
作为参数,并返回
hiddenStr
作为结果,而不是神奇地改变一些全局变量。@Prinzhorn啊,你说得对。我太习惯于用Java,出于某种原因,今天决定JavaScript也以同样的方式工作。。。