我正在使用文本框输入我的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
....
...
答案 0 :(得分:0)
我们走了:
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等开头。
答案 1 :(得分:0)
只要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")
答案 2 :(得分:0)
通过删除前缀“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)
答案 3 :(得分:0)
我会使用方便的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