我使用一个文本框输入到我的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
....
...
开始:
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等开始
只要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")
通过移除前缀"PL"提取一个数字
解析为整数
使用自定义数字格式字符串(零占位符)添加零和前缀
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)
我将使用方便的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字符串。PadLeft