在vb.net中匹配模式后,将datetime作为字符串添加到字符串中

时间:2015-08-18 15:57:32

标签: regex vb.net datetime

我有这个字符串例如:" Example_string.xml" 我想在"之前添加。" _DateTime现在所以它会像:

" Example_string_20151808185631.xml"

我怎样才能实现它?正则表达式?

3 个答案:

答案 0 :(得分:1)

是的,您可以通过使用前瞻来实现这一目标。例如:

Dim result As String = Regex.Replace("Example_string.xml", "(?=\.)", "_20151808185631")

由于模式只匹配字符串中的位置(句点​​之前的位置),而不是匹配文本的一部分,因此replace方法实际上不会替换任何输入文本。它实际上只是将替换文本插入字符串中的该位置。

或者,如果您发现令人困惑,您可以只匹配期间,然后只在替换文本中包含句点:

Dim result As String = Regex.Replace("Example_string.xml", "\.", "_20151808185631.")

如果你不想只查找任何句号,并且想要更安全一些(例如处理包含多个句点的文件名,那么你可以使用类似的句子来代替\. \.\w+$。但是,如果您需要使其具有弹性,并且不必使用RegEx,那么最好使用Path.GetFileNameWithoutExtensionPath.GetExtension方法, Crowcoder推荐。例如,你可能还需要让它处理没有扩展名的文件名,这甚至会使它复杂化。

答案 1 :(得分:1)

...或

Path.GetFileNameWithoutExtension("Example_string.xml") + "_20151808185631" + Path.GetExtension("Example_string.xml")

答案 2 :(得分:1)

怎么样:

    Dim sFile As String = "Example_string.xml"
    Dim sResult As String = sFile.ToLower.Replace(".xml", "_" & Format(Now(), "yyyyMMddHHmmss") & ".xml")
    MsgBox(sresult, , sFile)