我正在尝试在提交表单时从文本字段中删除所有空格,以便邮政编码字段的内容与数据库中的内容相匹配...
If drSet5c.Tables(0).Rows(0).Item("post_code") = UCase(Replace(tbPostcode.Text, " ","")) Then
response.write("Postcodes match")
Else
response.write("Postcodes DON'T match")
End If
因此,如果数据库中的邮政编码为AB12CD且用户键入AB1 2CD,则在提交表单时会删除该空格,并显示匹配语句。这不行。
如果用户不包含空格,一切正常。
有什么想法吗?
答案 0 :(得分:1)
这是因为Ucase
是静态(VB Shared)方法,而Replace
是实例方法。试试这个:
tbPostcode.Text.Replace(" ","").ToUpper
答案 1 :(得分:1)
创建临时控制台应用程序并运行以下代码:
Module Module1
Sub Main()
Dim dbaseValue = "AB12CD"
Dim userInput = "AB1 2CD"
If UCase(dbaseValue) <> UCase(Replace(userInput, " ", "")) Then
Console.WriteLine("You need a new machine")
Else
Console.WriteLine("The bug is elsewhere")
End If
Console.ReadLine()
End Sub
End Module
它说什么?
答案 2 :(得分:1)
尝试将其分解为部分,以便您可以正确评估字符串。在一行中完成所有这些操作的可读性较差且更容易出错。另外,远离使用VB6的旧符号与UCase,CStr,Len等。它们仍然在Microsoft.VisualBasic命名空间内有效(并且MS向我们保证它不会去任何地方),但是你会找到示例代码如果您只是熟悉.Net对象结构,则更容易翻译。
' Get the row string out using ToString to force the typing
Dim rowPostCode As String = drSet5c.Tables(0).Rows(0).Item("post_code").ToString()
' Perform the case manipulation and replace function, then assign to new string
Dim tbPostCodeFormatted As String = tbPostcode.Text.Trim().ToUpper().Replace(" ", "")
' Perform the string comparison. Because we're ignoring case here, the ToUpper()
' used above may not be necessary
If rowPostCode.Equals(tbPostCodeFormatted, StringComparison.OrdinalIgnoreCase) Then
response.write("Postcodes match")
Else
response.write("Postcodes DON'T match")
End If
答案 3 :(得分:0)
尽量不仅使用Replace()
而且使用String.Replace()