Vb.net 查找文本字符串并将其替换为现有字符串的一部分

Vb.net 查找文本字符串并将其替换为现有字符串的一部分,vb.net,Vb.net,我有一个.txt文件,格式如下: ---------------------------------------------------------------------------------------------------------------------------------------------------------- |Order Number|PegReqOrNo |Loc |Product Number |OrdSrtTime|OrdEndTime|Prod

我有一个.txt文件,格式如下:

---------------------------------------------------------------------------------------------------------------------------------------------------------- 
|Order Number|PegReqOrNo  |Loc |Product Number    |OrdSrtTime|OrdEndTime|Prod. Time|Reqmt Time|OrdSrtDate|OrdEndDate|Comp. Date|Reqmt Date|     Date Var.|
---------------------------------------------------------------------------------------------------------------------------------------------------------- 
|000105812778|            |0002|10000347          |10:03:50  |19:37:43 |19:37:43  |00:00:00  |08/02/2016|02/16/2022|02/16/2022|          |  0/00:00:00|
|000106805034|4200252838  |0002|H827080082GAAZ    |13:43:25  |08:30:04 |08:30:04  |15:00:00  |02/18/2020|09/02/2020|09/02/2020|08/24/2020|   8/17:30:04-|
我希望更改
日期变量
列中最后一个在右侧的字符串。我希望保留
/
前面的值,以及
-
末尾的值(如果有)


上面数据中的两个示例是
0/00:00:00
8/17:30:04-
,因此我想分别保留
0
-8

对于您的奇怪请求,您可以使用以下方法。我希望我能很好地理解

Private Sub AdjustMyData()
    Try
        Dim allLines As IEnumerable(Of String) = IO.File.ReadAllLines("C:\Users\YourUser\Desktop\test\test.txt")

        Dim data As List(Of String) = (From elemet In allLines).Select(Function(linea As String)
                                                                           If linea.Contains("|") Then
                                                                               Dim parts = linea.Split(CChar("|"))
                                                                               Dim newLinea = (From part In parts
                                                                                               Where part IsNot Nothing
                                                                                               Where part Like "*#/##:##:##*").Select(
                                                                                               Function(s As String) As String
                                                                                                   If s Is Nothing OrElse s.Length = 0 Then Return ""
                                                                                                   linea = linea.Replace(s, "~")
                                                                                                   Dim numerisS As String = CStr(IIf(s.Contains("-"), "-", "")) & Trim(s.Remove(s.IndexOf("/")))
                                                                                                   Return Space(s.Length - numerisS.Length) & numerisS
                                                                                               End Function).ToList.FirstOrDefault
                                                                               Return Strings.Replace(linea, "~", newLinea)
                                                                           End If
                                                                           Return linea
                                                                       End Function).ToList


        IO.File.WriteAllLines("C:\Users\YourUser\Desktop\test\testFinal.txt", data.ToArray)

    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    End Try

End Sub

您可以使用正则表达式并创建一个模式,该模式要求值位于行的末尾(这意味着前面必须有13倍的符号“|”(如果我计算正确的话)。