以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有关查找替换字符串问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=178315)

--  作者:chh2321
--  发布时间:2022/6/29 12:19:00
--  有关查找替换字符串问题
下面这段代码是想把不标准的日期改成标准日期格式(YYYY-MM-DD)
Dim s As String = "2021-4就职百度公司。2021-04-26辞职"
Dim d As String = "(\\d){4}(\\-)(\\d)?(\\d)(?=[^\\x00-\\xff])"
Dim rgx As New System.Text.RegularExpressions.Regex(d)
Dim str As String
For Each match As System.Text.RegularExpressions.Match In rgx.Matches(s) 
    If match.Value.Length = 6 Then
        str = match.Value.Insert(5, "0") & "-15"
    ElseIf match.Value.Length > 6 Then
        str = match.Value & "-15"
    End If
    s = s.Replace(match.Value, str)
Next
MessageBox.Show(s)
如果字符串是"2021-4就职百度公司。2021-04-26辞职",可以改写成"2021-04-15就职百度公司。2021-04-26辞职";
但如果字符串是"2021-04就职百度公司。2021-04-26辞职",就会改写成"2021-04-15就职百度公司。2021-04-15-26辞职"

请教如何处理?

--  作者:有点蓝
--  发布时间:2022/6/29 13:34:00
--  
Dim s As String = "2021-4就职百度公司。2021-04-26辞职"
Dim d As String = "(\\d){4}(\\-)(\\d)?(\\d)(?=[^\\x00-\\xff])"
Dim str = System.Text.RegularExpressions.Regex.Replace(s , d , "$0-15")
Output.Show(str)