2012-11-27 211 views
1

当文本框更改时我希望在数字和字母数字字符之间添加空格。我想在数字和字母数字字符之间添加空格

例如

34 YT 567 *Allowed* 
22 KL 2345 *Allowed* 
22KL 2345 *Not Allowed* 
22KL2345 *Not Allowed* 
22 KL2345 *Not Allowed* 
+2

就个人而言,我会在验证时执行此操作,而不是在每次更改后执行此操作。例如,作为用户,如果我将光标放在“K”的前面并按退格键三次,我预计将删除“22” - 如果在每次更改后添加空格,它将没有影响。 – Joe

+0

@mcalex,这是他的问题。如果有人添加没有空间,他需要添加一个空间。 – Kaf

+0

var newtext = String.Join(“”,Regex.Matches(“34YT567”,@“\ d + | [AZ] +”)。Cast ().Select(x => x.Value));' –

回答

1

可以使用正则表达式很容易地找到错误的输入。

Regex rgx = new RegEx("([0-9]+[a-z]|[A-Z]+)||([a-z]|[A-Z]+[0-9]+)"); 
if (rgx.IsMatch(MyTextBox.Text) 
{ 
    //bad input 
} 
else 
    //input was good. 

正则表达式匹配是一个或多个数字由一个或多个字母或周围的其他方法(字母然后数字)之后直接跟随。

+0

这个答案很好,但我想在文本框中使用数字和高位字母数字字符。谢谢 –

+0

@BülentAlaçam这不是你问的问题。 – evanmcdonnal

2

这将插入空格在必要时修正不正确的值:

var correctedValue = Regex.Replace(
    incorrectValue, 
    "(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])", 
    " "); 

您可以使用相同的模式来检测使用Regex.IsMatch不正确的值,如果你想向用户发出警告,而不是自动修复它。

编辑:

Regex.IsMatch(MyTextBox.Text, 
    "(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])|[^a-zA-Z0-9 ]") 

将返回true如果用户输入一号码旁边的一个字母,或输入任何非字母数字(和非空间)字符。

如果你想删除非字母数字字符和插入空间,你需要做的两个步骤;第一个Regex.Replace与模式[^a-zA-Z0-9 ],然后Regex.Replace上面的调用。

+0

这个答案很好,但我想在文本框中使用数字和字母数字字符。 –

相关问题