检查同一地方的空间发生情况

时间:2015-10-13 19:22:41

标签: vb.net

我希望限制用户只传递数字,字母, - 和单个空格。问题是我不希望用户可以在同一个地方放置多个空格,如下所示:

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

3 个答案:

答案 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+", " ")

接下来使用帖子中提到的F​​or-Loop。