字符串值不为空,但无法对其进行任何操作?VB.net



嗨,这真的让我感到困惑,我确定它很简单,但我无法弄清楚为什么会发生这种情况。

我正在读取一个文本文件并找到一个开始和结束来提取数据。我提取的数据是 - "版本是 10.2.0.5.0"

我有价值,因为我可以把它装出来。当我将鼠标悬停在 OraContents 字符串上时,它会向我显示"版本是 10.2.0.5.0",这是正确的。

所以有一些味精盒来测试将被移除的东西......

问题是当我尝试并喜欢此示例中将 OraContent 写入文件时,就像在主代码片段中一样.. 它说 Null 和错误,即使我为 OraContent 分配了一个值 - 或者我尝试简单地说以下内容...

If OraContents = "version is 10.2.0.5.0" Then
MsgBox("Oracle found")
End If 

再次,它忽略了 If 语句,它只是跳过它,因为 OraContent 与值不匹配,但它确实如此!

我错过了什么... : \

提前谢谢。

我的代码..

Sub GetFiles()
    Dim DirInfo As New DirectoryInfo(ProgramFiles & "OracleInventorylogs")
    For Each file As FileSystemInfo In DirInfo.GetFileSystemInfos()
 Dim myFile = IO.Directory.GetFiles(ProgramFiles & "OracleInventorylogs").OrderByDescending(Function(f) New FileInfo(f).LastWriteTime).First()
        If InStr(file.FullName, "installActions") Then
 MsgBox(myFile)
            Dim testTxt As New StreamReader(myFile)
            Dim allRead As String = testTxt.ReadToEnd()
            testTxt.Close()
 If InStr(allRead, "Oracle Universal Installer") Then
                Dim OraContents As String
                OraContents = allRead
                Dim StartPos, EndPos As Integer
                StartPos = OraContents.IndexOf("INFO: Oracle Universal Installer version is ")
                EndPos = OraContents.IndexOf("INFO: Oracle Universal Installer version is ")
                StartPos = StartPos + 32
                EndPos = EndPos + 55
 OraContents = OraContents.Substring(StartPos, EndPos - StartPos)
MsgBox(OraContents)
                Test(OraContents) 'This is a check to make sure value is not Null..its not
System.IO.File.Create("c:OracleVersion.txt")
                Dim path As String = "c:OracleVersion.txt"
                Dim sw As StreamWriter
sw.WriteLine(OraContents)
                sw.Close()
End If
MsgBox("Found")
        Else
            'MsgBox("Not Found")
        End If
    Next
End Sub

在您的字符串内容 (32 118 101 114 115 105 111 110 32 105 115 32 49 48 46 50 46 48 46 53 46 48 13) 中,最后一个字符"13"是一个新行,在打印时无法真正看到。尝试在协同映射之前修剪字符串。

If OraContents.Trim() = "version is 10.2.0.5.0" Then

或者获取最后一个字符

OraContents = OraContents.Substring(StartPos, EndPos - StartPos - 1)

您始终可以通过打印长度来看到差异

MessageBox.show(OraContents.Length & ":" & "version is 10.2.0.5.0".Length)

检查字符串的内容以查看是否有任何隐藏或意外的字符。如果需要,您可以对常量执行相同的操作。

dim s as string
For i As Integer = 0 To Len(OraContents) - 1
  s = s & Asc(OraContents.Chars(i)) & " "
Next i
msgbox(s) ' or debug / watch

您可以使用OraContents = OraContents.trim来删除字符串两端的空格、回车符(在您的例子中为 13)、换行符等。

顺便说一下,如果用户输入字符串,您可能希望执行忽略大写/小写差异的比较:

if string.compare(OraContents.trim, "Oracle Universal Installer", true) = 0 then

相关内容

最新更新