我有这个代码:
string first = "2-18;1-4; 5-212; 4-99" ;
Char delimiter = '-';
String pattern = @"\s?(\d+)([-])(\d+)";
Run Code Online (Sandbox Code Playgroud)
而且我想知道是否有任何方法可以将分隔符放在模式中而不是([-])?
你可以使用字符串插值:
string first = "2-18;1-4; 5-212; 4-99" ;
Char delimiter = '-';
String pattern = $@"\s?(\d+)([{delimiter}])(\d+)";
Run Code Online (Sandbox Code Playgroud)
的$(其必须在前面符号@)使得有可能通过使用把一个变量(字符串)字符串中的{ }
注意:在旧版本的C#中,这不起作用
在这种情况下,您可以使用string.Format:
string.Format(@"\s?(\d+)([{0}])(\d+)", delimiter);
Run Code Online (Sandbox Code Playgroud)
这工作方式相同,但在后面的参数使用数字占位符 ,
Regex.Escape :(致NtFreX的积分)
另外,如果你正在使用正则表达式,你应该逃避你的角色(因为它们可能是正则表达式中的其他东西).
$@"\s?(\d+)([{Regex.Escape( delimiter.ToString() )}])(\d+)";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |