Javascript replace()相同字符不同结果
我有一个词:google,我正在将每个字符更改为特定的颜色,但我不知道如何使字母“o”变成不同的颜色 这是我的JS:Javascript replace()相同字符不同结果,javascript,css,replace,Javascript,Css,Replace,我有一个词:google,我正在将每个字符更改为特定的颜色,但我不知道如何使字母“o”变成不同的颜色 这是我的JS: var text=$(“#类型化字符串”).html().replace(/e/g,'e')。replace(/g/g,'g')。replace(/l/g,'l')。replace(/o/g,'o'); $(“#键入的字符串”).html(文本) .red{ 颜色:rgb(219,50,54); } 蓝先生{ 颜色:rgb(72133237); } 格林先生{ 颜色:rgb(6
var text=$(“#类型化字符串”).html().replace(/e/g,'e')。replace(/g/g,'g')。replace(/l/g,'l')。replace(/o/g,'o');
$(“#键入的字符串”).html(文本)代码>
.red{
颜色:rgb(219,50,54);
}
蓝先生{
颜色:rgb(72133237);
}
格林先生{
颜色:rgb(60,186,84);
}
黄先生{
颜色:rgb(24419413);
}
google
您可能需要使用以下正则表达式:
letter + '{1}(?![^<]*\>)'
您可能需要使用以下正则表达式:
letter + '{1}(?![^<]*\>)'
正如其他人指出的那样,您的问题是您正在用
g
然后替换最后一个字符串中的所有l,这将替换类中的l
另一种解决方法是使用函数替换。在使用函数时,每个匹配项依次被替换,而您所做的任何替换都将被忽略
此外,您可以使用单独的键和布尔值来跟踪是否已替换第一个o。我将此添加到我的示例中,使用布尔值作为字母o
替换键的一部分,以简化操作
var替换={
g:‘g’,
o0:‘o’,
o1:‘o’,
l:‘l’,
e:‘e’
};
var ele=$(“#类型化字符串”);
var text=ele.html();
var firstODone=假;
text=text.替换(/[gogle]/g,函数(字母){
var键=字母;
如果(键=='o'){
key=key+(+firstODone);//将布尔值转换为整数0或1
第一齿=真;
}
返回替换项[键];
})
ele.html(文本)代码>
.red{
颜色:rgb(219,50,54);
}
蓝先生{
颜色:rgb(72133237);
}
格林先生{
颜色:rgb(60,186,84);
}
黄先生{
颜色:rgb(24419413);
}
谷歌
正如其他人指出的那样,你的问题是你正在用
g
然后替换最后一个字符串中的所有l,这将替换类中的l
另一种解决方法是使用函数替换。在使用函数时,每个匹配项依次被替换,而您所做的任何替换都将被忽略
此外,您可以使用单独的键和布尔值来跟踪是否已替换第一个o。我将此添加到我的示例中,使用布尔值作为字母o
替换键的一部分,以简化操作
var替换={
g:‘g’,
o0:‘o’,
o1:‘o’,
l:‘l’,
e:‘e’
};
var ele=$(“#类型化字符串”);
var text=ele.html();
var firstODone=假;
text=text.替换(/[gogle]/g,函数(字母){
var键=字母;
如果(键=='o'){
key=key+(+firstODone);//将布尔值转换为整数0或1
第一齿=真;
}
返回替换项[键];
})
ele.html(文本)代码>
.red{
颜色:rgb(219,50,54);
}
蓝先生{
颜色:rgb(72133237);
}
格林先生{
颜色:rgb(60,186,84);
}
黄先生{
颜色:rgb(24419413);
}
谷歌
$(文档).ready(()=>{
让oldStr=$(“#类型化字符串”).html();
让newStr='';
for(设i=0;i
$(文档).ready(()=>{
让oldStr=$(“#类型化字符串”).html();
让newStr='';
for(设i=0;i
您可以创建一个按字母返回颜色的函数,并使用replace方法和回调函数,如下所示:
var colors = {
g: 'blue',
o: 'yellow',
l: 'green',
e: 'red'
};
function wrapTheLetter(letter) {
var colorClass = colors[letter];
if (letter == 'o') {
// update it's color for the future
colors.o = 'grey';
}
return '<span class="' + colorClass + '">'+letter+'</span>';
}
var text = $("#typed-strings").html().replace(/\w/g, wrapTheLetter);
$("#typed-strings").html(text);
var颜色={
g:‘蓝色’,
o:'黄色',
l:‘绿色’,
e:‘红色’
};
功能包装盒(字母){
var colorClass=颜色[字母];
如果(字母=='o'){
//为将来更新它的颜色
颜色。o=‘灰色’;
}
返回“”+字母+“”;
}
var text=$(“#类型化字符串”).html().replace(/\w/g,wrapTheLetter);
$(“#键入的字符串”).html(文本);
您可以创建一个按字母返回颜色的函数,并使用replace方法和回调函数,如下所示:
var colors = {
g: 'blue',
o: 'yellow',
l: 'green',
e: 'red'
};
function wrapTheLetter(letter) {
var colorClass = colors[letter];
if (letter == 'o') {
// update it's color for the future
colors.o = 'grey';
}
return '<span class="' + colorClass + '">'+letter+'</span>';
}
var text = $("#typed-strings").html().replace(/\w/g, wrapTheLetter);
$("#typed-strings").html(text);
var颜色={
g:‘蓝色’,
o:'黄色',
l:‘绿色’,
e:‘红色’
};
功能包装盒(字母){
var colorClass=颜色[字母];
如果(字母=='o'){
//为将来更新它的颜色
颜色。o=‘灰色’;
}
返回“”+字母+“”;
}
var text=$(“#类型化字符串”).html().replace(/\w/g,wrapTheLetter);
$(“#键入的字符串”).html(文本);
在html分配执行之前是否设置了文本…?问题是您正在全局替换,并且在添加类时添加了更多被替换的字符,因此您会得到不连贯和无效的html。这是一种不好的替换方法。您将最终匹配刚刚添加的标记中的字符串。如果您坚持以替换的方式执行此操作,您可以修改正则表达式以匹配第二个、第三个等字符:/(?!o)o/
查找非捕获正则表达式组。这是一个非常特殊的情况。如果您不希望看到“google”以外的任何其他值,那么就没有必要为此找到一个非常优雅的解决方案,因为输出在一开始就已经确定了。文本是否在html赋值执行之前就已经设置好了…?问题是您正在全局替换,当你添加类的时候,会有更多的字符被替换,所以你会得到不连贯和无效的HTML。这是一种不好的替换方式。如果你坚持用替换-You c的方法来匹配你刚才添加的标记中的字符串