Vb.net 查找文本字符串并将其替换为现有字符串的一部分
我有一个.txt文件,格式如下:Vb.net 查找文本字符串并将其替换为现有字符串的一部分,vb.net,Vb.net,我有一个.txt文件,格式如下: ---------------------------------------------------------------------------------------------------------------------------------------------------------- |Order Number|PegReqOrNo |Loc |Product Number |OrdSrtTime|OrdEndTime|Prod
----------------------------------------------------------------------------------------------------------------------------------------------------------
|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倍的符号“|”(如果我计算正确的话)。