【发布时间】:2012-12-20 07:42:32
【问题描述】:
我在 C# 中有以下内容。
string fileName = @"X:\Users\username\AppData\Local\foo.txt";
我想执行Regex.Replace 以便得到以下信息。
string fileName = @"X:\Users\AppData\Local\foo.txt";
最好使用允许驱动器号 (X:) 是动态的正则表达式。本质上,我只需要删除 'username' 部分。另外,请注意,用户名只是用户实际姓名的占位符 - 因此可以是 bob 或 larry 或 john 或其他任何名称。正则表达式需要考虑到这一点。
您可以在这里指望的是它总是以X:\Users\ 开头(其中X:可以是C: 或D: 等),然后是一些字符串,然后是然后是\,然后是其他一些不重要的路径元素。此外,最好在 users or Users 上进行不区分大小写的匹配。
我知道这可以在没有Regex 的情况下完成,但我需要它以适应仅提供Regex 支持的更大系统。不支持 String.Replace 或 String.Join 之类的内容。
【问题讨论】:
-
只需 split('\') 并从数组中删除第二项,完成。
-
这比使用正则表达式还要糟糕...
-
fileName = fileName.Replace(@"\username", "");会这样做,但为什么你需要使用正则表达式? -
抱歉,用户名也是动态的 - 可能是 john 或 larry 或 bob 或其他任何名称。我真的需要使用正则表达式 - 我知道,这有点矫枉过正,但没关系。
-
@Raymond,你一直说你需要使用正则表达式。这是为什么?这似乎是一个奇怪的要求。