在Javascript中查找和替换字符
我有一个JavaScript代码,它是一个名为“x”的变量,其值为“Hello World”。还有另外两个名为“旧”和“新”的变量。我想要的是当我给变量“旧”的一个随机值和变量“新”的新值时。然后,我需要该程序来查找和替换句子中的相似字符并添加新值。在Javascript中查找和替换字符
例如: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>
字符串是在Javascript不变。您需要对已更改内容的变量进行新的分配。
您可以使用String#replace
直接替换模式。
function fndReplace(string, o, n) {
return string.replace(new RegExp(o, 'g'), n);
}
console.log(fndReplace('Hello world', 'l', 'y'));
如果你喜欢变异单个字母索引,你可以分割字符串,改变阵列。更改后,您可以将数组连接到新的字符串。
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'));
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'));
该死的你,为什么你编辑;)我已经写了answear :) – Daredzik
JavaScript是一种功能性langauage,所以如果这是没有必要的for
结构气馁。实际上,String库中有一个预构建函数部分可以实现此目标:String.prototype.replace()。
尼娜的回答是好,如果你想使用for
,但这里的另一种方式来做到这一点:
var xArr = x.split('');
xArr.forEach(function(e, index) {
if(e === old) {
xArr[index] = neww;
}
});
x = xArr.join('');
如果你不想使用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'));
的可能的复制[如何更换在JavaScript字符串的所有出现?(https://stackoverflow.com/questions/1144783/how-to-replace-all-occurrences -of-a-string-in-javascript) – emed
为什么不能替换''world''中的''l''? –