Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript replace()相同字符不同结果_Javascript_Css_Replace - Fatal编程技术网

Javascript replace()相同字符不同结果

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

我有一个词: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(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的方法来匹配你刚才添加的标记中的字符串