javascript str.replace为字符串前面的单词添加颜色
在csv.file中,列“col2”行包含字符串:javascript str.replace为字符串前面的单词添加颜色,javascript,regex,Javascript,Regex,在csv.file中,列“col2”行包含字符串: "unserer {m}, unsere {p} and {f}, unseres {n}" 它是动态附加的 d3.select("#element").html(d.col2) 根据{m | f | n}的内容,我想更改文本的背景色 我正在用这样的正则表达式进行查找: /.*(\w+)\s\{f\}.*/ 我要将\w+替换为的位置 '<span style=background-color:red|yellow|green;&g
"unserer {m}, unsere {p} and {f}, unseres {n}"
它是动态附加的
d3.select("#element").html(d.col2)
根据{m | f | n}的内容,我想更改文本的背景色
我正在用这样的正则表达式进行查找:
/.*(\w+)\s\{f\}.*/
我要将\w+替换为的位置
'<span style=background-color:red|yellow|green;>$1</span>
”$1
我需要这三个用例{m},{f},{n},每个用例都应该有自己的文本颜色。所以
d3.select("#sentence").html(d.col2).html(function(d) {
if ( this.match("{m}"){
this.replace(/.*(\w+)\s\{m\}/gi, "<span style=color:red;>" + $1"</span>");
} if ( this.match("{f}") {
this.replace(/.*(\w+)\s\{f\}/gi, "<span style=color:yellow;>" + $1"</span>");
} else {
this.replace(/.*(\w+)\s\{n\}/gi, "<span style=color:green;>" + $1"</span>");
}
};)
d3.select(“#句”).html(d.col2).html(函数(d){
如果(this.match(“{m}”){
替换(/.*(\w+)\s\{m\}/gi,“+$1”);
}if(this.match(“{f}”){
替换(/.*(\w+)\s\{f\}/gi,“+$1”);
}否则{
替换(/.*(\w+)\s\{n\}/gi,“+$1”);
}
};)
这段代码是我想做的伪代码;它不起作用,我不确定是否可以这样做。您可以在中使用函数作为replacor,也可以在RegExp中使用函数
var str=“unserer{m},unsere{p}和{f},unsere{n}”;
变量d={
m:‘红色’,
f:‘黄色’,
n:‘绿色’
},
re=/(\w+(=\s+\{([^}]+)\})/g;
str=str.replace(
重新,
函数($0,$1,$2){
若有(d中为2美元)
返回“+$1+”;
返回$0;
}
);
//'不安全{m},不安全{p}和{f},不安全{n}'
您可以在中使用函数作为replacor,也可以在RegExp中使用函数
var str=“unserer{m},unsere{p}和{f},unsere{n}”;
变量d={
m:‘红色’,
f:‘黄色’,
n:‘绿色’
},
re=/(\w+(=\s+\{([^}]+)\})/g;
str=str.replace(
重新,
函数($0,$1,$2){
若有(d中为2美元)
返回“+$1+”;
返回$0;
}
);
//'不安全{m},不安全{p}和{f},不安全{n}'
您可以在中使用函数作为replacor,也可以在RegExp中使用函数
var str=“unserer{m},unsere{p}和{f},unsere{n}”;
变量d={
m:‘红色’,
f:‘黄色’,
n:‘绿色’
},
re=/(\w+(=\s+\{([^}]+)\})/g;
str=str.replace(
重新,
函数($0,$1,$2){
若有(d中为2美元)
返回“+$1+”;
返回$0;
}
);
//'不安全{m},不安全{p}和{f},不安全{n}'
您可以在中使用函数作为replacor,也可以在RegExp中使用函数
var str=“unserer{m},unsere{p}和{f},unsere{n}”;
变量d={
m:‘红色’,
f:‘黄色’,
n:‘绿色’
},
re=/(\w+(=\s+\{([^}]+)\})/g;
str=str.replace(
重新,
函数($0,$1,$2){
若有(d中为2美元)
返回“+$1+”;
返回$0;
}
);
//'不安全{m},不安全{p}和{f},不安全{n}'
无需向我解释德语-我是德国人
这是我的RegExp版本,它可能会更好地处理性别和复数:
var r=/(^|,)\s*(.*?)(?=\s+\{([fmn])\})/g;
s.replace(r,'$1<span class="$3">$2</span>');
当然,这些类需要在CSS中提供合适的颜色
更新
正如您所知,好的东西总是可以改进的,因此这里有一个版本不会给{p}
标记(或任何以'{
开头的标记)上色:
s.replace(/(^ |,)\s*([^{]+)(?=.*.\{([fmn])\})/g,'$1$2')
这会让你
'<span class="m">unserer </span>{m},<span class="f">unsere </span>{p} and {f},<span class="n">unser </span>{n}'
'unseer{m},unseer{p}和{f},unser{n}'
无需向我解释德语-我是德国人
这是我的RegExp版本,它可能会更好地处理性别和复数:
var r=/(^|,)\s*(.*?)(?=\s+\{([fmn])\})/g;
s.replace(r,'$1<span class="$3">$2</span>');
当然,这些类需要在CSS中提供合适的颜色
更新
正如您所知,好的东西总是可以改进的,因此这里有一个版本不会给{p}
标记(或任何以'{
开头的标记)上色:
s.replace(/(^ |,)\s*([^{]+)(?=.*.\{([fmn])\})/g,'$1$2')
这会让你
'<span class="m">unserer </span>{m},<span class="f">unsere </span>{p} and {f},<span class="n">unser </span>{n}'
'unseer{m},unseer{p}和{f},unser{n}'
无需向我解释德语-我是德国人
这是我的RegExp版本,它可能会更好地处理性别和复数:
var r=/(^|,)\s*(.*?)(?=\s+\{([fmn])\})/g;
s.replace(r,'$1<span class="$3">$2</span>');
当然,这些类需要在CSS中提供合适的颜色
更新
正如您所知,好的东西总是可以改进的,因此这里有一个版本不会给{p}
标记(或任何以'{
开头的标记)上色:
s.replace(/(^ |,)\s*([^{]+)(?=.*.\{([fmn])\})/g,'$1$2')
这会让你
'<span class="m">unserer </span>{m},<span class="f">unsere </span>{p} and {f},<span class="n">unser </span>{n}'
'unseer{m},unseer{p}和{f},unser{n}'
无需向我解释德语-我是德国人
这是我的RegExp版本,它可能会更好地处理性别和复数:
var r=/(^|,)\s*(.*?)(?=\s+\{([fmn])\})/g;
s.replace(r,'$1<span class="$3">$2</span>');
当然,这些类需要在CSS中提供合适的颜色
更新
正如您所知,好的东西总是可以改进的,因此这里有一个版本不会给{p}
标记(或任何以'{
开头的标记)上色:
s.replace(/(^ |,)\s*([^{]+)(?=.*.\{([fmn])\})/g,'$1$2')
这会让你
'<span class="m">unserer </span>{m},<span class="f">unsere </span>{p} and {f},<span class="n">unser </span>{n}'
'unseer{m},unseer{p}和{f},unser{n}'
你能告诉我们你的示例字符串的预期最终输出吗?你能创建一个你的代码的示例提琴或弹琴吗?我试图回答你的最后一个问题,但对你是如何进行数据绑定感到非常困惑..“unseer{m},unseer{f},unsere{n}”也是最终输出,但ist的“unseer”应为红色,“unseer”应为黄色,“unsere”应为绿色。@标记数据绑定正常。元素“#句”在单击时设置:单击=函数(d){d3.select(#句”).html(d.col2)};d.col2是csv数据集的一部分,该数据集包含col1、col2等列。该字符串首先出现在工具提示中:单击后会附加到“#句”中。这些是字典中的单词,应根据性别进行着色。问题在于替换或拆分并连接字符串。如果每个字符串只包含一个性别,这不会是一个问题。您可以向我们展示示例字符串的预期最终输出吗?可以吗