2016-01-21 3 views
0

ответ знакомства Katana314 в нижеJavascript Searching сделал легкий

прошествию дней, чтобы выяснить, как использовать регулярные выражения для BBcode перевода я решил изобрести колесо и вот я здесь.

Я написал сценарий, который ищет теги BBcode, такие как [b] [/ b] или любые другие [] в тексте.

Я ищу простое решение для сравнения тегов, которые я нашел в тексте, и сопоставляю их с таблицей «массив», если вы предпочитаете. Я хочу сделать это так, потому что в конце концов я буду использовать базу данных для вставки и удаления BBcodes.

Мне нравится, как я делаю замену, потому что ее легко наполнить. и нет необходимости в Regex.

ЗАМЕНИТЬ fonction с ним массиву:

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 со значениями «in».

Допустим, у меня есть Var BBCode = "[we]";

Как сделать я проследовать чтобы увидеть, если он вышлет один из моего значения массива;

Если результат верен, тогда я могу просто сделать bbToHtml(BBCode);, и если нет, я пропущу его или заброшу ошибку.

ответ

1

Я люблю функции массива ES5.

function isBB(str) { 
    return !pairs.every(function(s) { 
    return s.in !== str; 
    }); 
} 

every означает «возвращает истину, если эта функция возвращает истину для всех значений этого массива.» Предполагается, что вы ищете только "[b]", а не "[b] " или любые незначительные изменения.

+0

Удивительный очень простой, я люблю его, спасибо вам большое – MadeInDreams

-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); 
+0

Вы попробовали? – MadeInDreams

Смежные вопросы