ASP.net VB - 修剪/替换问题

时间:2010-10-22 13:19:57

标签: .net asp.net vb.net

我正在尝试在提交表单时从文本字段中删除所有空格,以便邮政编码字段的内容与数据库中的内容相匹配...

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,则在提交表单时会删除该空格,并显示匹配语句。这不行。

如果用户不包含空格,一切正常。

有什么想法吗?

4 个答案:

答案 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()