Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入-每隔一个字符后插入_C#_Regex_Character - Fatal编程技术网

C# 插入-每隔一个字符后插入

C# 插入-每隔一个字符后插入,c#,regex,character,C#,Regex,Character,所以我正在用C#开发一个Unity 3D游戏。作为第一步,用户必须输入其个人代码,由5对组成,其中每对有2个字符/数字(Im分别验证字符和数字)。现在我想实现的是,当你输入信用卡号时,每一秒的字符后面都会出现一个负号,就像你在每四个数字后面看到的一样 示例:27-05-AB-CD-EF 现在我试着使用正则表达式,它对前两个字母起作用,但不知怎的,正则表达式也将负号视为一个字符,然后它无限频繁地添加负号。我尝试了不同的版本,我认为我只允许字母和数字,但不知何故,这不起作用 Regex.Replac

所以我正在用C#开发一个Unity 3D游戏。作为第一步,用户必须输入其个人代码,由5对组成,其中每对有2个字符/数字(Im分别验证字符和数字)。现在我想实现的是,当你输入信用卡号时,每一秒的字符后面都会出现一个负号,就像你在每四个数字后面看到的一样

示例:27-05-AB-CD-EF

现在我试着使用正则表达式,它对前两个字母起作用,但不知怎的,正则表达式也将负号视为一个字符,然后它无限频繁地添加负号。我尝试了不同的版本,我认为我只允许字母和数字,但不知何故,这不起作用

Regex.Replace(codeText, "([A-Za-z0-9][^-]){2}", "$0-");

猜猜怎么回事

尝试使用这个表达式
”([A-Za-z0-9]){2}(?!-)”
其中
(?!-)
是一个零宽度负前瞻断言,如果您不知道它是一个匹配的表达式,但它不是匹配值的一部分。因此,此表达式匹配两个后面不跟-的字符。

阅读本页了解更多信息

如果输入了
27-05-AB-CD-EF
,您的意思是想将
27-05-AB-CD-EF
作为输出吗?请尝试
Regex.Replace(s,@“\w{2}(?=[^-]),“$0-”
。如果您不想匹配
s.
”(([A-Za-z0-9]){2}[^-]),则正则表达式也可以看起来像
@“[^\W}{2}(?=[^-])”
?(2个字符a-Z0-9不以a-)这样,如果您有5个字符串,并且希望一次使用
string.Join(“-”,pairs)
,那么您将得到类似
27-05-AB-CD-EF-
的结果。为了澄清,我的输入没有减号,我想在每个新字符后调用Regex.Replace。这也是一个输入字段,它是一个字符串。@MartinPfeifhofer我不知道你在说什么,你的问题中没有“游标”。发布你有问题的代码。这几乎可以完成任务,就像@Wiktor Stribiżew的答案一样。唯一的补充是,我必须将插入符号位置移动到Inputfield中的最后一个位置。@WiktorStribiżew实际上这不是同一个解决方案,您的解决方案稍微好一点,因为它不会插入另一个-在输入完所有10个字符之后。