2014-09-12 4 views
1

Я использую этот JQuery код для получения значений Var из текста внутри DIVJQuery получить текст в скобках

$('div').each(function() { 
    var a = $(this).html(); 
    var b = a.split('/'); 
    $(this).html("<span>" + b[0] + "</span><span>" + b[1] + "</span><span>" + b[2] + "</span>"); 
    var c = $(this).text(); 
    var d = $(this).find("span").eq(0).text(); 
    var e = $(this).find("span").eq(1).text(); 
    var f = $(this).find("span").eq(2).text(); 
}); 

Так HTML будет в такой форме

<div>Text1/Text2/Text3</div> 

Я хочу, чтобы изменить код JQuery для получить текст в скобках не «/»

<div>[Text1][Text2][Text3]</div> 
+0

Вы пробовали что-нибудь? Если вам удалось написать (или даже понять) код, который вы используете сейчас, я вполне уверен, что вы сможете решить, какие изменения сделать, чтобы сделать то, что вы хотите сейчас. – lascort

+0

Да, я попытался изменить код, удалив «[» и сделав 'var b = a.split (']');' но это не работает, потому что есть "]" остаются с "Text3" –

ответ

1

самый элегантный способ будет использовать регулярное выражение для разбора ваш текст ул ь, как это:

var text = a.match(/\[(.*)\]{1}\[(.*)\]{1}\[(.*)\]{1}/); 

А затем вставьте каждую строку текста text[1], text[2], text[3] туда, куда вы хотите поместить его.

Таким образом, в вашем примере:

var b = a.match(/\[(.*)\]{1}\[(.*)\]{1}\[(.*)\]{1}/); 
$(this).html("<span>" + b[1] + "</span><span>" + b[2] + "</span><span>" + b[3] + "</span>"); 

Примечание: первый элемент в матче регулярного выражения будет исходная строка.

+0

Что-то не так это дает ошибку со мной, я использую 'a.match (/ [^ [\]] + (? =])/g);' и отлично работает, спасибо за ваш ответ –

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