见Katana314的答案
在花了几天时间弄清楚如何使用正则表达式进行BBcode翻译后,我决定重新发明轮子,我就在这里。
我写了一个脚本,在文本中搜索[b] [/ b]或任何其他[]的BBcode标签。
我正在寻找一种简单的解决方案来比较我在文本中找到的标签,并将它们与表格匹配," array"如果你更喜欢。我想这样做,因为最终我将使用数据库来插入和删除BBcodes。
我有点像我做替换的方式因为它容易填充。并且不需要正则表达式。
用它的数组替换功能:
function bbToHtml(s) {
var p, pairs = [
{ "in": "[b]", "out": '<span style="color:red;">' },
{ "in": "[/b]", "out": '</span>' },
];
for (p in pairs) {
s = s.replace(pairs[p]["in"], pairs[p]["out"]);
}
return s;
}
现在这很简单。我想做的是比较我的BBcode与&#34; in&#34;值。
假设我有var BBCode = "[we]";
如何继续查看它是否与我的某个数组值匹配;
如果结果为真,那么我可以bbToHtml(BBCode);
,如果不是,我会跳过它或者输错误。
答案 0 :(得分:1)
我喜欢ES5阵列功能。
function isBB(str) {
return !pairs.every(function(s) {
return s.in !== str;
});
}
every
表示&#34;如果此函数对此数组的所有值都返回true,则返回true。&#34;这假设您只是在寻找"[b]"
而不是"[b] "
或任何轻微变化。
答案 1 :(得分:-1)
您问题的可能解决方案:
var pairs = [
{ "in": "[b]", "out": '<span style="color:red;">' },
{ "in": "[/b]", "out": '</span>' },
];
function bbToHtml(s)
{
for (var p in pairs) {
s = s.replace(pairs[p]["in"], pairs[p]["out"]);
}
return s;
}
var search = '[we]';
if (pairs[search]) bbToHtml(search);