我正在使用正則表達式,但其工作正常。 我的要求是我有一個字符串值,它有這樣的'##Anything##'
標籤。 我想用ASP的控制用HTML標記替換字符串
##name##
替換此##Anything##
捐贈一texbox ##Field##
捐贈組合框 等
我正在使用正則表達式,但其工作正常。 我的要求是我有一個字符串值,它有這樣的'##Anything##'
標籤。 我想用ASP的控制用HTML標記替換字符串
##name##
替換此##Anything##
捐贈一texbox ##Field##
捐贈組合框 等
可以使用String.Replace()
方法做到這一點:
//Example Html content
string html ="<html> <body> ##Name## </body> </html>";
//replace all the tags for AspTextbox as store the result Html
string ResultHtml = html.Replace("##Name##","<asp:Textbox id=\"txt\" Text=\"MyText\" />");
不,但它有不同的字符串以及像## Anything ## –
您的標記##任何##創建一個文本框包含任何文本?我真的不明白你需要 –
我編輯的問題再次看到 ##文本##意味着它的文本框 ##值##意味着它的下拉 ##什麼##等我有用戶預定義的文本插入一個富文本框 –
再次,最好的提示是使用string.Replace(),也許與string.Substring()結合使用。
String.Replace方法應該可以正常工作,並且可能是最適合您的解決方案。但是,如果你仍然想一個正則表達式的解決方案,你可以使用這樣的事情:
private const string REGEX_TOKEN_FINDER = @"##([^\s#]+)##"
private const int REGEX_GRP_KEY_NAME = 1;
public static string Format(string format, Dictionary<string, string> args) {
return Regex.Replace(format, REGEX_TOKEN_FINDER, match => FormatMatchEvaluator(match, args));
}
private static string FormatMatchEvaluator(Match m, Dictionary<string, string> lookup) {
string key = m.Groups[REGEX_GRP_KEY_NAME].Value;
if (!lookup.ContainsKey(key)) {
return m.Value;
}
return lookup[key];
}
它適用於令牌像這樣的:##招呼##。 ##之間的值在您提供的字典中搜索,請記住字典中的搜索區分大小寫。如果在字典中找不到它,則令牌在字符串中保持不變。下面的代碼可以用來測試一下:
var d = new Dictionary<string, string>();
d.Add("VALUE1", "1111");
d.Add("VALUE2", "2222");
d.Add("VALUE3", "3333");
string testInput = "This is value1: ##VALUE1##. Here is value2: ##VALUE2##. Some fake markers here ##valueFake, here ##VALUE4## and here ####. And finally value3: ##VALUE3##?";
Console.WriteLine(Format(testInput, d));
Console.ReadKey();
運行它會給下面的輸出:
這是值1:1111這裏是值2:2222這裏一些假標記## valueFake,這裏## VALUE4 ##和這裏####。最後是value3:3333?
您想在運行時在網頁上創建文本框,還是在創作過程中創建網頁? –
我想在運行時創建一個asp控件,同時解析字符串。 –