我希望限制用户只传递数字,字母, - 和单个空格。问题是我不希望用户可以在同一个地方放置多个空格,如下所示:
Something 45 Last Ter
如你所见,我们有两个地方,在“Something”之后和“Last”之后放置了多个空格。如何更改我的代码以确保不会发生这种情况?
'check whether Symbol contains only letters, digits or - symbol otherwise break
For Each c As Char In txtNazwa.Text
If Not Char.IsLetterOrDigit(c) AndAlso c <> "-"c AndAlso c <> " " Then
MessageBox.Show("Only letters, digits, - and single space are available", "Ostrzeżenie", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Try
End If
Next
答案 0 :(得分:3)
我假设用户正在输入文本框。查看文本框更改事件。
private void currencyTextBox_TextChanged(object sender, EventArgs e)
{
try
{
currencyTextBox.Text = Regex.Replace(currencyTextBox.Text, " {2 }", " ")
}
catch
{
// Do something if we get an error
}
}
答案 1 :(得分:2)
直接回答问题:
检查字符串是否包含2个连续的空格,如下所示:
If txtNazwa.Text.Contains(" ") Then
MessageBox.Show("The value must not contain two consecutive spaces")
End If
如果您要为用户修复此问题,则可以执行以下操作:
Dim str As String = txtNazwa.Text
While str.Contains(" ")
str = str.Replace(" ", " ")
End While
txtNazwa.Text = str
答案 2 :(得分:1)
使用正则表达式并为自己制造麻烦。
Dim Nazwa_Text = System.Text.RegularExpressions.Regex.Replace(txtNazwa.Text, "\s+", " ")
接下来使用帖子中提到的For-Loop。