我尝试以\u00030
到\u000315
的格式解析IRC颜色代码。
我将所有RGB颜色添加到一个表中,并使用它循环遍历它们:
console.log(i + ">" + '\\u0003'+i + ">" + colors[i]);
var re = new RegExp("\\u0003"+i, 'gi');
console.log(re + " > " + '</span><span style="color:' + colors[i]+ ';">');
我得到了这个输出:
tools.php:337 15>\u000315>rgb(210,210,210)
tools.php:339 /\u000315/gi > </span><span style="color:rgb(210,210,210);">
tools.php:337 14>\u000314>rgb(127,127,127)
tools.php:339 /\u000314/gi > </span><span style="color:rgb(127,127,127);">
tools.php:337 13>\u000313>rgb(255,0,255)
tools.php:339 /\u000313/gi > </span><span style="color:rgb(255,0,255);">
tools.php:337 12>\u000312>rgb(0,0,252)
当html.replace(re, "<span stuff>");
将其硬编码为html.replace(/\\u00314/gi, '</span><span style="color: rgb(127,127,127);">');
也不会产生任何结果..
我试图解析的东西:
\u0002\u000314:: \u00037Channel Name \u000314:: \u00030SITE: \u00034UP \u000314:: \u00030IRC BONUS: \u00034OFFLINE \u000314:: \u00030SIGNUPS: \u00034CLOSED \u000314::\u000f
我似乎错过了一些东西。 \u
或\\u
没有任何区别,gi
,g
,i
或者没有任何区别,总而言之它似乎就是这样根本不解决任何问题。
我发现的事情是,如果我放弃RegExp并因此仅使用html.replace("\\u00314", '</span><span style="color: rgb(127,127,127);">');
的修饰符替换第一次出现,但这还不够。
我有什么明显的遗失吗?
答案 0 :(得分:1)
最终的代码是下面的代码。将字符串保存到变量而不是在函数中执行+i
是有效的
var val = $('textarea#topic').val();
var html = "<span style=\"color: #fff;\">" + val + "</span>";
var colors = [
"rgb(0,147,0)",
"rgb(0,0,0)",
"rgb(0,0,127)",
"rgb(0,147,0)",
"rgb(255,0,0)",
"rgb(127,0,0)",
"rgb(156,0,156)",
"rgb(252,127,0)",
"rgb(255,255,0)",
"rgb(0,252,0)",
"rgb(0,147,147)",
"rgb(0,255,255)",
"rgb(0,0,252)",
"rgb(255,0,255)",
"rgb(127,127,127)",
"rgb(210,210,210)"
];
for(i = (colors.length-1); i >= 0; i--) {
var index = 0;
var str = "\\u0003"+i+"";
while((index = html.indexOf(str, index + 1)) > -1) {
html = html.replace(str, '</span><span style="color:' + colors[i]+ ';">');
console.log(str + ">" + colors[i]);
}
$('div#topictext').html(html);
done = false;
setTimeout(setTrue(), 5000);
while(!done) {
}
}
html = html.replace("\\u0002", "");
html = html.replace("\\u000f", "");
$('div#topictext').html(html);