C# 替换包含大括号的字符串
我有一份类似的声明C# 替换包含大括号的字符串,c#,.net,regex,asp.net-mvc,powershell,C#,.net,Regex,Asp.net Mvc,Powershell,我有一份类似的声明 [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } 我想用“TestS
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
我想用“TestString”
替换“{0}的长度必须至少为{2}个字符。”。
目前我正在使用Regex.Replace,但它不起作用。
e、 g
请帮忙
编辑:
我正在解析类的每一行(使用VisualStudioShell包),并尝试在找到时替换所提到的字符串。我正在将行号值存储到“lno”中。这就是我在这里初始化它的原因。
它适用于正常的跨步,如:
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
只有当它使用大括号解析字符串时,才会出现问题
谢谢。定义正则表达式模式时必须小心。像
{
、}
或
这样的字符在表达式中有一个特殊的含义,需要转义
var lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
var pattern = @"The \{0\} must be at least \{2\} characters long\."; // Don't forget the @
string _name = Regex.Replace(lno, pattern, "TestString", RegexOptions.None);
拨弄
定义正则表达式模式时必须小心。像
{
、}
或
这样的字符在表达式中有一个特殊的含义,需要转义
var lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
var pattern = @"The \{0\} must be at least \{2\} characters long\."; // Don't forget the @
string _name = Regex.Replace(lno, pattern, "TestString", RegexOptions.None);
拨弄
没有必要使用正则表达式来完成您想要完成的任务
string lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
string pattern = "The {0} must be at least {2} characters long.";
string _name = lno.Replace(pattern, "TestString");
没有必要使用正则表达式来完成您想要完成的任务
string lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
string pattern = "The {0} must be at least {2} characters long.";
string _name = lno.Replace(pattern, "TestString");
您可以使用该方法对字符串进行转义:
string lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
string pattern = Regex.Escape("The {0} must be at least {2} characters long.");
string _name = Regex.Replace(lno, pattern, "TestString", RegexOptions.None);
从MSDN:
通过用转义码替换最小字符集(\、*、+、?、|、{、[、(、)、^、$、#和空格),对其进行转义。这指示正则表达式引擎按字面解释这些字符,而不是将其作为元字符
您可以使用该方法对字符串进行转义:
string lno = "[StringLength(100, ErrorMessage = \"The {0} must be at least {2} characters long.\", MinimumLength = 6)]";
string pattern = Regex.Escape("The {0} must be at least {2} characters long.");
string _name = Regex.Replace(lno, pattern, "TestString", RegexOptions.None);
从MSDN:
通过用转义码替换最小字符集(\、*、+、?、|、{、[、(、)、^、$、#和空格),对其进行转义。这指示正则表达式引擎按字面解释这些字符,而不是将其作为元字符
首先,您需要用\来转义
lno
字符串中的双引号。然后您可以只使用string。替换,或者您还需要在正则表达式中分隔花括号。您试图在这里做什么?您不能使用代码“更改”消息-它的元数据,并且必须在编译时知道时间。@StephenMuecke我已经编辑了我的问题。首先,你需要用\来转义lno
字符串中的双引号。然后你可以只使用string。替换,或者你还需要在正则表达式中分隔花括号。你在这里试图做什么?你不能用cod来“更改”消息e-它的元数据,必须在编译时知道。@StephenMuecke我已经编辑了我的问题。Thanx很多。但是我如何动态转义?什么是动态的?Thanx很多。但是我如何动态转义?什么是动态的?