2012-11-27 208 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

這個答案很好,但我想在文本框中使用數字和字母數字字符。 –

相關問題