我目前正在尝试遍历文本文件的文件夹并读取它们。阅读它们之后,我想使用正则表达式提取文件名称的特定部分,但是出现错误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))
中,我遇到了我所描述的错误。
感谢您的帮助,谢谢。
答案 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}
,无需将单个原子放入字符类。