Содержание подстроки C # - PullRequest
1 голос
/ 16 июня 2011

У меня есть данные, хранящиеся с использованием tinymce с заполнителями перед каждой таблицей

Вид редактора при вводе данных:

#data1
[html table1] 

#data2
[html table2]

#data3
[html table3]

это хранится в базе данных, обернутой тегом <p> в базе данных.

Я хочу раздеть и получить HTML-таблицу на основе переданного параметра.

string getTable(string placeholder)
{
     string content = db.getData();

     //placeholder = data1, return html table 1 substring data from content variable
     return [html table1]; //html string

    //placeholder = data2
     return [html table2]; //html string
}

Как мне добиться этого с помощью C #?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Я думаю это регулярное выражение может быть надежным #data2([^#]+|#(?!data))+</table> (нажмите, чтобы увидеть пример) , но это зависит от вашего ввода, оно может сломаться. Вы не можете доверять регулярному выражению для анализа html.

#data1
<table id="t1">
<tr><td>#</td></tr>
</table>

#data2
<table id="t2">
<tr><td>#</td></tr>
</table>

#data3
<table id="t3">
<tr><td>#</td></tr>
</table>

Чтобы сопоставить таблицу по ее идентификатору, вы могли бы попробовать <table.*?id=.t1.>([^<]|\<(?!/table))+</table>.

1 голос
/ 16 июня 2011

В этом случае вы можете попробовать использовать регулярное выражение.Хотя это не будет полным доказательством (HTML не является обычным языком), но если у вас нет вложенных таблиц, оно должно работать нормально.

string strRegex = @"(?<=#data1)\s*?<table.*?>.*</table>";
Regex myRegex = new Regex(strRegex, RegexOptions.Singleline);
string strTargetString = @"#data1 <table><tr><td> asdsad</td></tr></table>";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
     // myMatch.Value contains table
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...