我想为用户提供一个花哨的许可证密钥文本框,它会插入破折号.密钥应该是20个字符长(4组,每组5个字符)
我尝试使用正则表达式,首先:
Regex.Replace( text, ".{5}", "$0-" );
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为即使没有后续字符(例如AAAAA-)插入破折号,也会导致无法删除破折号,因为它会自动重新插入.
然后我想到告诉正则表达式应该有一个跟随字符
Regex.Replace( text, "(.{5})(.)", "$1-$2" );
Run Code Online (Sandbox Code Playgroud)
但是把钥匙分成5-6-6组......
有任何想法吗?
使用负向前瞻以避免-在最后添加.它匹配来自第一个但不是最后5个数字的输入字符串的每个5位数.
.{5}(?!$)
Run Code Online (Sandbox Code Playgroud)
替换字符串
$0-
Run Code Online (Sandbox Code Playgroud)
string str = "12345678909876543212";
string result = Regex.Replace(str, @".{5}(?!$)", "$0-");
Console.WriteLine(result);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
输出:
12345-67890-98765-43212
Run Code Online (Sandbox Code Playgroud)