2010-12-14 4 views
0

Я пытаюсь проанализировать фрагмент текста с помощью JavaScript и, читая, узнал, что синтаксический анализ HTML с помощью Regex равен quite evil. Я хотел бы удалить более зловещую часть моего текста, прежде чем анализировать его.Как удалить фрагмент текста из строки Javascript?

Если у меня есть кусок текста, как показано ниже, как я могу (1) отрезать все от [caption] до [/caption] и (2) сохранить этот текст в новом var?

Sed rutrum enim sit amet sem fringilla egestas placerat mauris pretium. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ultricies egestas malesuada. Etiam rhoncus eros a leo imperdiet vitae tincidunt purus laoreet. Mauris ut mauris quam, sed pharetra urna. Etiam eu enim mauris, vitae bibendum orci. Quisque ac sapien massa, at dignissim tellus. 

[caption id="blah" align="alignleft" width="123" caption="Lorem ipsum dolor sit, consectetur adipiscing elit."]<a href="http://www.google.com/something"><img title="Lorem ipsum dolor sit, consectetur adipiscing elit." src="http://google.com/something/else.png" alt="Lorem ipsum dolor sit, consectetur adipiscing elit." width="345" /></a>[/caption] 

Aenean faucibus mi sit amet leo suscipit nec egestas leo ultrices. Integer tincidunt, urna quis varius accumsan, urna quam congue nulla, ut ornare orci purus in ligula. Suspendisse varius, tellus aliquam tincidunt, ante semper elit, sit amet tincidunt elit augue eget odio. Vivamus sit amet tincidunt massa. Sed nunc ligula, feugiat quis volutpat congue, eleifend in tellus. Curabitur ut dictum felis. Nunc sodales euismod leo, in commodo elit ornare hendrerit. Cras luctus eros id nisl vestibulum elementum. Maecenas ut neque turpis. Donec ornare hendrerit rutrum. Non nibh leo, dictum ullamcorper dui. 
+1

Вы использовали '[caption]' (с квадратными скобками) ... вы имеете в виду '' (с угловыми скобами)? Нет проблем с использованием угловых кронштейнов внутри кодового блока в S.O. – Lee

+0

Спасибо за комментарий. Верьте или нет, я имею дело с текстовым редактированием, которому нравится использовать собственный psuedo-код. Я заметил, что те же правила «регулярное выражение будет болезненным» одинаково, если не более релевантны. – buley

ответ

1

Вы можете использовать .split()

var temp = yourText.split("[caption") 

Это дает:

Темп [0] со всем до "[заголовок"

темп [1] со всем после того, как «[ caption "

После этого вы можете продолжить разделение/объединение фрагментов массива в elimina т. е. любое зелье струны.

+1

просто будьте осторожны, если у вас есть несколько вхождений '[caption]' ... особенно если они * вложенные *: '[caption] все [caption] stuff [/ caption] другие вещи [/ caption]'. – Lee

2

Вы также можете использовать регулярное выражение:

var split = text.split(/\[\/?caption[^\]]*\]/); 

и принять раскол [1] в результате

1
  • Если вы не разбор обычного текста там нет способа сделать это проще, чем с регулярным выражением , по крайней мере, для этого не существует встроенных функций в js.
  • Если вы разбираете HTML в браузере, есть много простого способа сделать это, используя дерево DOM и функции для DOM, afaik рекомендуется для этого. И js-фреймворки, такие как jQuery, делают эту задачу максимально простой.
  • Если вы разбираете HTML на стороне сервера, например. by node.js, есть также библиотеки для создания и работы с DOM, такими как jsdom, и снова вы можете сделать это, используя функции DOM.
Смежные вопросы