Извлечь часть текста в ASP.NET

Мне нужно извлечь подмножество строки, используя пару маркеров, которые будут в ней содержаться. Например, учитывая следующую строку:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. <!--extract-->Sed nec luctus magna, ac tincidunt metus. Maecenas sodales iaculis ipsum sed blandit.<!--/extract--> Quisque tincidunt nulla sapien, non faucibus turpis aliquam at.

Как я могу извлечь все, что находится между и (но не сами теги)? Строка будет каждый раз разной длины, но всегда будет содержать маркеры.

Я возился с String.SubString(), но изо всех сил пытаюсь надежно рассчитать начальные/конечные индексы. Обратите внимание, что маркеры начала/конца всегда будут иметь определенные значения, чтобы их можно было найти.

Заранее спасибо.


person EvilDr    schedule 14.08.2013    source источник


Ответы (2)


Мне всегда проще дважды Substring обрезать нужную строку с обеих сторон.

string myString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. <!--extract-->Sed nec luctus magna, ac tincidunt metus. Maecenas sodales iaculis ipsum sed blandit.<!--/extract--> Quisque tincidunt nulla sapien, non faucibus turpis aliquam at.";
myString = myString.Substring(myString.IndexOf("<!--extract-->") + "<!--extract-->".Length);
myString = myString.Substring(0, myString.IndexOf("<!--/extract-->"));

Или сделать то же самое за один вызов (уродливее)

string myString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. <!--extract-->Sed nec luctus magna, ac tincidunt metus. Maecenas sodales iaculis ipsum sed blandit.<!--/extract--> Quisque tincidunt nulla sapien, non faucibus turpis aliquam at.";
myString = myString.Substring(myString.IndexOf("<!--extract-->") + "<!--extract-->".Length, myString.IndexOf("<!--/extract-->") - myString.IndexOf("<!--extract-->") - "<!--extract-->".Length);
person Colin Steel    schedule 14.08.2013
comment
Большое спасибо. Супер быстрый ответ и прямо на деньги! Ваше здоровье. - person EvilDr; 14.08.2013

этот код поможет вам выполнить ваше требование

    string s="adipiscing elit.<!--extract-->Sed nec luct<!--/extract-->"
    string p = "<!--extract-->";
    string q = "<!--/extract-->";
    int a = s.IndexOf("<!--extract-->");

    int b = s.IndexOf("<!--/extract-->");
    string result= s.Substring(a + p.Length, b - (a + p.Length));
person Anuj    schedule 14.08.2013