kName = "cglsamaz";
cName = kName.replace("a","e");
document.getElementById("anythingx").innerHTML = cName;
此代码结果:cglsemaz
我想要的是:cglsamez
答案 0 :(得分:1)
我假设您想要一点通用的解决方案,而不仅仅是字面意义上的a
,否则Regex模式就可以做到。
为此,可以结合使用lastIndexOf
和substring
:
var kName = "cglsamaz";
var valueToReplace = 'a';
var newValue = 'e';
var replaceIndex = kName.lastIndexOf(valueToReplace);
var cName =
kName.substring(0, replaceIndex) +
newValue +
kName.substring(replaceIndex + valueToReplace.length);
document.getElementById("anythingx").innerHTML = cName;
<div id="anythingx"></div>
答案 1 :(得分:1)
这是一个广义的解决方案,它使用函数作为.replace(...)
方法的第二个参数:
function replacerMaker(rplc, inst) {
// This is to keep track of the numbered instance found
var idx = 0;
// this returns a function which will replace the numbered instance of
// the search string with the replacement string
return function(match, offset, string) {
if (++idx === inst) {
return rplc;
}
return match;
}
}
// A slightly longer name to test instances 3, 4, etc.
var kName = "cglsamazabkdsakuodakdif";
var cName = kName.replace(/a/g, replacerMaker("e", 2));
document.getElementById("anythingx").innerHTML = "Second Instance: " + cName;
cName = kName.replace(/a/g, replacerMaker("e", 4));
document.getElementById("anythingx").innerHTML += "<br />" + "Fourth Instance: " + cName;
<div id="anythingx"></div>
答案 2 :(得分:1)
我以前的答案有一个聪明的选择:
kName = "cglsamaz";
cName = kName.replace("a","*TEMP*");
cName = cName.replace("a","e");
cName = cName.replace("*TEMP*","a");
document.getElementById("anythingx").innerHTML = cName;
将第一个匹配项替换为临时值,允许根据需要替换第二个匹配项(现在是第一个匹配项),然后将原始值恢复为临时值!可以简化为单个字符串。
(我创建了一个新答案,因为它是完全不同的方法)
答案 3 :(得分:0)
您可以将其反转,然后将a替换为和e,然后再次反转。
kName = "cglsamaz";
kName = kName.split("").reverse().join("")
cName = kName.replace("a","e");
cName = cName.split("").reverse().join("")
然而,对于一个简单的更改来说,这似乎已经很长时间 希望有帮助
答案 4 :(得分:0)
kName = "cglsamaz";
cName = kName.replace(/a(?=[^a]+$)/i,"e");
document.getElementById("anythingx").innerHTML = cName;
这将仅替换任何字符串中的最后一个“ a”。
kName = "cglsamaz";
cName = kName.split("").reverse().join("").replace(/a(?=[^a]{0,}a{1,1}[^a]{0,}$)/i,"e").split("").reverse().join("");
document.getElementById("anythingx").innerHTML = cName;
不幸的是,JavaScript不支持Positive LookBehind。此代码将反转字符串,从末尾查找第二个“ a”(即原始字符串开头的第二个“ a”),将其替换然后再次反转。
这完全符合要求,并且可以用于任意数量的不区分大小写的“ a”字符。为了使其也可以与其他字符一起使用,可以对RegExp进行动态修改。