我需要格式化用戶輸入的一些文本。從字符串中捕獲字符串c#
例如:string str = "{{Lorem Ipsum|bold}}"
只是印刷和排版行業的虛擬文本。
我使用IndexOf
從字符串中提取了Lorem Ipsum,並以粗體顯示。但是如果我有兩個詞在同一個字符串中進行格式化,則會面臨問
例如:string str ="{{Lorem Ipsum|bold}}"
只是"{{printing|blue}}"
和排版行業的虛擬文本。
有人可以幫我出任何正則表達式來提取{{Lorem Ipsum|bold}}
和{{printing|blue}}
在C#中的數組。
注意:該模式有時可能是{{printing|blue,bold,http://www.google.com}}
。
擴展格式化方法。我已經硬編碼測試,後來我會相應地進行優化。
public static string Format(this string value)
{
System.Uri uriResult = null;
bool result = false;
string path = ConfigurationManager.AppSettings["path"];
if (value.Length > 0)
{
if (value.Contains("{{") && value.Contains("|") && value.Contains("}}"))
{
int totalLength = value.Length;
string unformattedText = value.Substring(value.IndexOf("{{"), (value.IndexOf("}}") - value.IndexOf("{{")) + 2);
string flowersRemoved = unformattedText.Substring(0, unformattedText.Length - 2);
flowersRemoved = flowersRemoved.Substring(2, flowersRemoved.Length - 2);
string[] textFormats = flowersRemoved.Split('|');
string text = textFormats[0];
string[] formats = textFormats[1].Split(',');
foreach (string format in formats)
{
result = Uri.TryCreate(format.ToLower(), UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp;
if (format.ToLower() == "bold")
text = "<b>" + text + "</b>";
else if (format.ToLower() == "red")
text = "<font color = \"red\">" + text + "</font>";
else if (format.ToLower() == "blue")
text = "<font color = \"blue\">" + text + "</font>";
else if (result)
text = "<a href = \"" + format + "\" target = \"_blank\">" + text + "</a>";
else if (System.IO.File.Exists(path + format))
{
string fileName = System.IO.Path.GetFileName(path + format);
text = "<a href = \" \\s\\Download\\" + fileName + "\">" + text + "</a>";
}
}
value = value.Replace(unformattedText, text);
}
return value;
}
return value;
}
你能告訴你迄今爲止編寫的代碼? –
如果該模式爲「{{printing | blue,bold,http://www.google.com}}」,那麼您想在數組中使用什麼?例如,結果數組看起來是這樣的:'var printing = string [] {「blue」,「bold」,「http://www.google.com」}'? –
如果您只需將'printing'和'blue,bold,http:// www.google.com'放置在數組中,我懷疑您需要一個正則表達式,除非您已經在內容中轉義了管道符號。會有嗎? –