2010-10-22 54 views
0

我试图从当一个表单提交的文本字段删除所有空格,这样的职位代码场比赛的内容,那些在数据库中...ASP.net VB - 修剪/更换问题

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,则在提交表单和匹配语句显示时会删除空格。虽然这不起作用。

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

任何想法?

回答

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 
+0

感谢这个乔尔。仍然没有解决问题,但一些很好的建议。我正在从别人离开的地方开始学习,并随着我的学习进行学习,因此所有的帮助都是值得赞赏的。 – Tom 2010-10-22 14:15:14

+0

@Tom - 当您处于调试模式时,您应该可以将鼠标放在单独的变量rowPostCode和tbPostCodeFormatted上以独立查看它们,看它们是否相同。如果他们不是,你可以发布他们是什么,这样我们可以看到发生了什么?在一个不是专门用于“'”的字段中填充空格是完全可能的。 – 2010-10-22 14:24:14

+0

我看到你在说什么,但是如果我在没有空格的框中键入邮编,它可以正常工作。这意味着它会在我删除空间之前进行比较? – Tom 2010-10-22 14:30:33

0

尝试使用不只是Replace()String.Replace()

+0

我该如何去做呢? – Tom 2010-10-22 13:54:27

+0

@Tom:对不起,请详细说明你的问题。 – abatishchev 2010-10-22 14:02:14

1

这是因为Ucase是静态的(VB共享)方法,而Replace是一个实例方法。试试这个:

tbPostcode.Text.Replace(" ","").ToUpper 
+0

这不会破坏它是好的,但它仍然返回完全相同的结果。 – Tom 2010-10-22 13:47:48

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 

是什么说的?