C#Regex替换帮助

5 c# regex

我有一个字符串:

Apple1231 | C:\ asfae\drqw\QWER | 2342 |的1.txt

我有以下代码:

 Regex line2parse = Regex.Match(line,@"(\|)(\|)(\|)(\d)");
 if (line2parse < 2)
 {

     File.AppendAllText(workingdirform2 + "configuration.txt",
Run Code Online (Sandbox Code Playgroud)

我希望能够做的就是每次更换|后先|\ 所以我想写出

Apple1231 | C:\ asfae\drqw\QWER\2342\1.TXT

Joh*_*han 9

没有正则表达式你可以做到这一点:

string line = @"Apple1231|C:\asfae\drqw\qwer|2342|1.txt";
string[] parts = line.Split('|');
string clean = parts[0] + "|" + string.Join(@"\", parts, 1, parts.Length - 1);
Run Code Online (Sandbox Code Playgroud)

string.Join调用使用重载,允许您指定开始索引以跳过第一个项目.


Dav*_*ray 1

+1 约翰。显然正则表达式不是最好的解决方案,但这是我的看法:

string original = @"Apple1231|C:\asfae\drqw\qwer|2342|1.txt";
Regex pattern = new Regex(@"(?<=.*\|)(?'rep'[^\|]*)\|");
string result = pattern.Replace(original, @"${rep}\");
Run Code Online (Sandbox Code Playgroud)

这比严格必要的更为通用,因为它将处理任意数量的替换。