在c#中使用regex格式化字符串

Eri*_*itz 13 c# regex

我想格式化一个看起来像这样的字符串

BPT4SH9R0XJ6
Run Code Online (Sandbox Code Playgroud)

进入看起来像这样的东西

BPT4-SH9R-0XJ6
Run Code Online (Sandbox Code Playgroud)

该字符串将始终是12个字母和数字的混合

任何建议都将受到高度赞赏,谢谢

Oll*_*lly 28

尝试 Regex.Replace(input, @"(\w{4})(\w{4})(\w{4})", @"$1-$2-$3");

正则表达式经常受到嘲笑,但这是一种非常巧妙的方式来满足您的需求.可以扩展到使用字符串方法难以满足的更复杂的要求.


das*_*ght 6

您可以将其"(.{4})(.{4})(.{4})"用作表达和"$1-$2-$3"替代.然而,这对于regexp来说并不是一个很好的用途:你可以更容易地使用它Substring.

var res = s.Substring(0,4)+"-"+s.Substring(4,4)+"-"+s.Substring(8);
Run Code Online (Sandbox Code Playgroud)