我想为用户提供一个花哨的许可证密钥文本框,可以插入破折号。这个键应该有20个字符长(4组5个字符)
我试过使用regex,首先:
Regex.Replace( text, ".{5}", "$0-" );这是一个问题,因为破折号是插入,即使没有下列字符,例如AAAAA-,结果是无法删除破折号,因为它是自动重新插入。
然后我想告诉regex里面应该有一个字符
Regex.Replace( text, "(.{5})(.)", "$1-$2" );但这把钥匙分成5-6-6组.
有什么想法吗?
发布于 2014-08-27 16:07:59
发布于 2014-08-27 16:08:25
发布于 2014-08-27 16:20:34
如果你喜欢一种非正则方法的话,你可能会喜欢linq风格的方法.
这可以在LinqPad中运行:
var sourceReg = "abcdeFGHIJ12345klmno";
var splitLength=5;
var regList = Enumerable.Range(0, sourceReg.Length/splitLength).Select(i => sourceReg.Substring(i*splitLength, splitLength));
regList.Dump("Registration List");
var regSeparated = string.Join("-", regList);
regSeparated.Dump("Registration with Separators");注意:没有考虑到没有正确划分的reg代码。
请参阅上面的方法,以及类似问题中的其他方法:
https://stackoverflow.com/questions/25531965
复制相似问题