2012-01-10 257 views
1

如何使用String.Replace函数来使用模式?替换为模式匹配

我想这样做:

newTextBox = newTextBox.Replace("<Value> #'a string of any number of chars#' </Value>", 
           "<Value>" + textBoxName + "</Value>"); 

#“任意数目的字符#的字符串”可以是任何字符串。

+8

正则表达式? – CodeZombie 2012-01-10 10:18:56

回答

9

使用正则表达式:

newTextBox.Text = 
    Regex.Replace(
     newTextBox.Text, 
     @"<Value>[^\<]+</Value>", 
     "<Value>" + textBoxName.Text + "</Value>"); 
+0

我会添加一个简短的正则表达式的解释,并链接到作弊表http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet – ANeves 2012-01-10 10:25:52

0

您应该使用Regex,这就是为什么它的存在。 Regex

1

也可以做这样的?:

 const string textBoxName = "textBoxName"; 
     var newTextBox = "<Value>{0}</Value>".Replace("{0}", textBoxName); 
+0

为什么使用'string.Replace(。 ..)'而不是'string.Format(字符串格式,...)'? – Nuffin 2012-01-10 10:56:44

+0

@Tobias:确实如此。如果我要演示哪些元素被替换为{0},{1},{2}等,或者是否需要特定的格式(Int16或具有N个零/小数位的浮点数),String.Format会更好。 )。我猜如果OP使用占位符如'#replaceabletext#'或{0}以外的其他东西,我给出的.Replace()示例会更合适。{N} – 2012-01-10 11:25:05

0

用正则表达式参考:

using System.Text.RegularExpressions; 

而且要替换字符:[0-9a-zA-Z_#' ]

newTextBox.Text = Regex.Replace(
    "<Value> #'a string of any number of chars#' </Value>", 
    @"<Value>[0-9a-zA-Z_#' ]*</Value>", 
    "<Value>" + textBoxName.Text + "</Value>", 
    RegexOptions.IgnoreCase);