Как искать текст для этого конкретного формата строки?
Я хочу проверить, содержит ли строка следующий формат
[QUOTE]
Test sentence
[/QUOTE]
Если это так, то я сделаю это.
string description = dr["description"].ToString();
description = description.Replace("[QUOTE]", "<blockquote>");
description = description.Replace("[/QUOTE]", "</blockquote>");
Хорошо.
а как насчет этого?
[QUOTE=Axio;26]
Test sentence
[/QUOTE]
Также здесь я хочу добавить тег blockquote, а также хочу отобразить этот текст внутри этих тегов.
"Orginall опубликовано Axio. Нажмите здесь"
Когда вы нажмете "Нажмите здесь", вы перейдете к этому конкретному сообщению. Так что это должна быть гиперссылка " 26 это идентификатор сообщения
Как это сделать?
3 ответа
Вы можете использовать регулярное выражение для сопоставления с тем, что есть в [QUOTE], и затем преобразовать его с помощью Split
на точку с запятой. Что-то вроде этого:
var regexPattern = @"\[QUOTE[=]{0,1}([\d\w;]*)\](.|\r|\n)*\[/QUOTE\]";
var test1 = @"[QUOTE=Axio;26]
Test sentence
[/QUOTE]";
var test2 = @"[QUOTE]
Test sentence
[/QUOTE]";
var regex = new Regex(regexPattern);
var match = regex.Match(test1);
if (match.Success)
{
if (match.Groups.Count > 1) //matched [QUOTE=...]
match.Groups[1].Value.Split(';').ToList().ForEach(s => Console.WriteLine(s));
else //matched [QUOTE]..
Console.WriteLine("Matched [QUOTE]");
}
else Console.WriteLine("No match");
Console.Read();
Много способов сделать это, например:
string des = dr["description"].ToString().Replace("\n", "");
string info[] = des.SubString(des.IndexOf('=') + 1, des.IndexOf(']')).Split(';');
string name = info[0];
string id = info[1]
string sentence = des.SubString(des.IndexOf(']') + 1, des.LastIndexOf('['));
когда вы получили это, вы знаете, что делать. Я написал это вручную, вам может понадобиться настроить его самостоятельно (положение подстроки не уверен, если нужно добавить /sub 1).
//Get the description text
var description = "[QUOTE=Axio;26]Orginall posted by Axio. Click here[/QUOTE]";
//Get your id
var id = description.Substring(description.IndexOf(";") + 1, description.IndexOf("]") - (description.IndexOf(";") + 1));
//replace with anchor with id and <blockquotes/>
var editedstring = description
.Remove(description.IndexOf("["), description.IndexOf("]") + 1)
.Insert(0, "<blockquote><a href=\"#" + id + "\">")
.Replace("[/QUOTE]", "</a></blockquote>");
Результат:
<blockquote><a href="#26">Orginall posted by Axio. Click here</a> </blockquote>
Orginall опубликовал Axio. кликните сюда