我有javascript代码,这是一个名为“x”的变量,其值为“Hello World”。另外还有两个名为“old”和“new”的变量。我想要的是当我给变量“Old”一个随机值时,将新值赋给变量“new”。然后我需要程序用新值查找和替换句子中的相似字符。
Ex:old =“l”,new =“y”,新句子需要成为“Heyyo World”,用'y'代替'l'字母。
以下是我的示例代码。
<script type="text/javascript">
function fndReplace()
{
var x = "Hello world";
var old = "l";
var neww = "y";
var i;
var length = x.length;
for(i=0;i<length-1;i++)
{
if(old[i] == neww)
{
old = old[i] + neww
}
}
document.write(old);
}
fndReplace();
</javascript>
答案 0 :(得分:1)
Javascript是一种功能性语言,因此如果没有必要,则不鼓励使用for
结构。事实上,String库中有一个预构建的函数部分可以实现这个目标:String.prototype.replace()。
如果您想使用for
,Nina的答案很好,但这是另一种方法:
var xArr = x.split('');
xArr.forEach(function(e, index) {
if(e === old) {
xArr[index] = neww;
}
});
x = xArr.join('');
答案 1 :(得分:0)
字符串是Javascript不可变的。您需要使用更改的内容对变量进行新的分配。
您可以使用String#replace
直接替换模式。
function fndReplace(string, o, n) {
return string.replace(new RegExp(o, 'g'), n);
}
console.log(fndReplace('Hello world', 'l', 'y'));
&#13;
如果您想使用索引改变单个字母,可以拆分字符串并更改数组。更改后,您可以将数组连接到新字符串。
function fndReplace(string, o, n) {
var letters = string.split(''),
i,
length = letters.length;
for (i = 0; i < length; i++) {
if (letters[i] === o) {
letters[i] = n;
}
}
return letters.join('');
}
console.log(fndReplace('Hello world', 'l', 'y'));
&#13;
ES6与spread syntax ...
和Array#map
。
function fndReplace(string, o, n) {
return [...string].map(c => c === o ? n : c).join('');
}
console.log(fndReplace('Hello world', 'l', 'y'));
&#13;
答案 2 :(得分:0)
如果您不想使用String.replace()
,则可以使用Array.map()
和Array.join()
制作相当小的功能。可能会更好String.split()
而不是在字符串上调用地图,但如果您正在打高尔夫球,它会削减1个字符。
let findReplace = (x, y, z) => [].map.call(x, c => c === y ? z : c).join('');
console.log(findReplace('Hello world', 'l', 'y'));
&#13;