嗨,这真是令人困惑,我确信它很简单,但我无法弄清楚为什么会发生这种情况。
我正在阅读一个文本文件并找到一个startpos和endpos来提取数据。我提取的数据是 - “版本是10.2.0.5.0”
我有价值,因为我可以msgbox出来。当我将鼠标悬停在OraContents字符串上时,它会显示“版本是10.2.0.5.0”这是正确的。
所以有一些msgbox来测试将要删除的东西......
问题是当我在这个例子中尝试并喜欢将OraContents写入主文件片段中的文件时..它表示Null和错误,即使我有一个分配给OraContents的值 - 或者我试过简单地说下面的内容。 ..
If OraContents = "version is 10.2.0.5.0" Then
MsgBox("Oracle found")
End If
并再次忽略了If语句,它只是跳过它,因为OraContents与值不匹配,但它是!
我缺少什么......:\
提前致谢。
我的代码..
Sub GetFiles()
Dim DirInfo As New DirectoryInfo(ProgramFiles & "Oracle\Inventory\logs")
For Each file As FileSystemInfo In DirInfo.GetFileSystemInfos()
Dim myFile = IO.Directory.GetFiles(ProgramFiles & "Oracle\Inventory\logs").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
答案 0 :(得分:1)
检查字符串的内容以查看是否有任何隐藏或意外字符。如果需要,您可以对常量执行相同的操作。
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
答案 1 :(得分:1)
在您的字符串内容(32 118 101 114 115 105 111 110 32 105 115 32 49 48 46 50 46 48 46 53 46 48 13)中,最后一个字符“13”是一个在打印时无法真正看到的新行它。在comapring之前尝试修剪你的字符串。
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)