【问题标题】:Checking content of textbox vb.net检查文本框 vb.net 的内容
【发布时间】:2015-07-09 07:40:30
【问题描述】:

我正在使用文本框输入我的 SQL 查询。根据输入,我创建了一个特定的查询并在 gridview 中显示数据。

但是我希望为我的用户做出调整。

他们经常输入类似 PL26... 但是这不是数据库中要搜索的有效名称。因此我想检查他们的输入,并相应地改变它,这样他们就不必考虑了。

我碰巧知道,当他们键入 PL26 时,正确的输入是 PL000026 ...要搜索的实体始终是“PL”+ 6 个字符/数字...所以如果他们写 PL155,我的数字/字符串传递给 sql 查询应该变成 PL + 000 + 155 = PL000155。

我希望有人可以帮助我如何做到这一点。那是不是可以呢?

我的想法/伪代码类似于

If tbInput.txt's FIRST 2 CHARS are PL, then check total length of string
     if StringLength < 8 characters, then 
            if length = 2 then ADD 4 0' after PL...
                if length = 3 then add 3 0's after  PL...
                    if length = 3 then add 3 0's after  PL..  
              etc
                 ....
                   ...

【问题讨论】:

    标签: asp.net vb.net gridview textbox user-input


    【解决方案1】:

    我们开始吧:

      Private Sub Button21_Click(sender As System.Object, e As System.EventArgs) Handles Button21.Click
    
            Debug.Print(formatCode("PL1"))
            Debug.Print(formatCode("PL"))
            Debug.Print(formatCode("PL01"))
            Debug.Print(formatCode("PL155"))
    
    
        End Sub
    
        Private Function formatCode(userInput As String) As String
    
            Dim returnVal As String
            If userInput.Length < 8 Then
                returnVal = String.Concat(userInput.Substring(0, 2), userInput.Substring(2, userInput.Length - 2).PadLeft(6, "0"))
            Else
                returnVal = userInput
            End If
    
            Return returnVal
    
        End Function
    

    您可能需要添加一些验证以确保它以 PL 等开头。

    【讨论】:

      【解决方案2】:

      只要 PL 和数字之间没有其他非数字字符,以下将起作用。您可以随时将其添加到您的验证中。

      Dim newInput As String
      
      If (input.StartsWith("PL")) Then
          input = input.Remove(0, 2)
      End If
      
      ' If this fails then it means the input was not valid
      Dim numberPart = Convert.ToInt32(input)
      
      newInput = "PL" + numberPart.ToString("D6")
      

      【讨论】:

      • 您好冯v,非常感谢您的回复!这是一个简单而有效的解决方案,效果非常好......!
      • 很高兴它非常适合您的情况;)
      【解决方案3】:

      通过删除前缀“PL”来提取一个数字
      解析为整数
      使用Custom Numeric Format Strings(零占位符)添加零和前缀

      Const PREFIX As String = "PL"
      Dim exctractedNumber As Int32
      If Int32.TryParse(tbInput.txt.Replace(PREFIX, String.Empty), exctractedNumber) = False Then
          'Error nahdling
          Exit Sub
      End If
      Dim finalFormat As String = String.Format("'{0}'000000", PREFIX)
      Dim finalValue As String = exctractedNumber.ToString(finalFormat)
      

      【讨论】:

        【解决方案4】:

        我会使用方便的 PadLeft 方法:

        Dim input As String = "PL26"
        Dim number As String = input.Substring(2, input.Length - 2)
        
        If number.Length <> 6 Then
            number = number.PadLeft(6, "0"C)
        End If
        

        MSDN String.PadLeft

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-19
          • 2014-11-17
          • 1970-01-01
          • 1970-01-01
          • 2013-12-02
          • 1970-01-01
          • 2019-08-26
          • 2022-01-04
          相关资源
          最近更新 更多