轻松搜索Javascript

时间:2016-01-21 18:42:20

标签: javascript arrays

  

见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);,如果不是,我会跳过它或者输错误。

2 个答案:

答案 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);