VB.NET连接字符串会添加不需要的空间

VB.NET连接字符串会添加不需要的空间,vb.net,Vb.net,我完全搞不懂为什么会这样。我正在编写一个小应用程序,用date Take属性为图像文件添加前缀。但是,当我附加.jpg扩展名时,它会在文件名和扩展名之间添加一个空格。例如“2017-11-07_13:04:01.jpg” 正如你所见,我试图通过修剪和替换来替换空间,但没有任何效果 从文件中获取日期时,它包含一个“VbNullChar” 您所需要做的就是添加一行代码来修剪它 Private Function ProcessFile(ByVal path As String) As String

我完全搞不懂为什么会这样。我正在编写一个小应用程序,用date Take属性为图像文件添加前缀。但是,当我附加.jpg扩展名时,它会在文件名和扩展名之间添加一个空格。例如“2017-11-07_13:04:01.jpg”


正如你所见,我试图通过修剪和替换来替换空间,但没有任何效果

从文件中获取日期时,它包含一个“VbNullChar”

您所需要做的就是添加一行代码来修剪它

Private Function ProcessFile(ByVal path As String) As String
    Const DATE_TAKEN As Integer = &H9003
    Dim img As Image = Image.FromFile(path)
    Dim dateTaken As String
    Dim pitem As PropertyItem
    If img.PropertyIdList.Contains(DATE_TAKEN) Then
        pitem = img.GetPropertyItem(DATE_TAKEN)
        dateTaken = Encoding.UTF8.GetString(pitem.Value, 0, pitem.Value.Length).ToString
        dateTaken = dateTaken.Trim(vbNullChar)
        dateTaken = Trim(Replace(Replace(dateTaken, ":", "-"), " ", "_"))
        dateTaken = Replace(dateTaken & ".jpg", " ", "")
    Else
        dateTaken = "Not available"
    End If
    img.Dispose()
    pitem = Nothing
    Return dateTaken
End Function

很明显,它不是一个空格字符,因为替换并没有删除它。所以,从字符串中获取该字符,看看它的实际值是什么。在不知道日期字段的格式的情况下,我最初的猜测是它实际上不是一个UTF-8字符串。或者它以null结尾,实际上是一个空字符串结尾为空字符,而不是空格。
Private Function ProcessFile(ByVal path As String) As String
    Const DATE_TAKEN As Integer = &H9003
    Dim img As Image = Image.FromFile(path)
    Dim dateTaken As String
    Dim pitem As PropertyItem
    If img.PropertyIdList.Contains(DATE_TAKEN) Then
        pitem = img.GetPropertyItem(DATE_TAKEN)
        dateTaken = Encoding.UTF8.GetString(pitem.Value, 0, pitem.Value.Length).ToString
        dateTaken = dateTaken.Trim(vbNullChar)
        dateTaken = Trim(Replace(Replace(dateTaken, ":", "-"), " ", "_"))
        dateTaken = Replace(dateTaken & ".jpg", " ", "")
    Else
        dateTaken = "Not available"
    End If
    img.Dispose()
    pitem = Nothing
    Return dateTaken
End Function