类型匹配的值不能转换为字符串

时间:2019-02-13 20:10:50

标签: .net regex vb.net

我目前正在尝试遍历文本文件的文件夹并读取它们。阅读它们之后,我想使用正则表达式提取文件名称的特定部分,但是出现错误Value of Type Match Cannot Be Converted To String

我尝试使用Cstr,但这似乎无法解决我的问题。

我正在使用的代码:

 Dim fileentries As String() = Directory.GetFiles("D:\User\BackUp\Project\bin\Debug\Orders")
 For Each entry In fileentries
        Dim match As New List(Of String)
        Dim regexmatch As Match = Regex.Match(entry, "Order_\d\d-\d\d-[\d]{4}_[\d]{6}")
        match.Add(CStr(regexmatch))

    Next

“正则表达式”部分在工作,似乎提取了我想要的文件名的正确部分,但是特别是在行match.Add(Cstr(regexmatch))中,我遇到了我所描述的错误。

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您需要访问.Value对象的Match属性,但是建议检查是否完全匹配:

Dim regexmatch As Match = Regex.Match(entry, "Order_\d\d-\d\d-\d{4}_\d{6}")
If regexmatch.Success Then
    match.Add(regexmatch.Value)
End If

请参见VB.NET demo

Imports System.Collections.Generic
Imports System.Text.RegularExpressions
' ... 
Dim match As New List(Of String)()
Dim entry As String = "XXXX_Order_12-12-1234_123456_irrelevant.txt"
Dim regexmatch As Match = Regex.Match(entry, "Order_\d\d-\d\d-\d{4}_\d{6}")
If regexmatch.Success Then
    match.Add(regexmatch.Value)
End If
Console.WriteLine(match(0)) ' => Order_12-12-1234_123456

请注意,[\d]{4}等于\d{4},无需将单个原子放入字符类。