删除单个反斜杠,将双精度转换为单个字符串

时间:2008-12-04 01:25:34

标签: c# regex

如何才能最好地将双反斜杠的实例转换为字符串中的单个反斜杠,但是删除任何出现的单个反斜杠?

所以这个:

\|Testing|ABC:1234\\1000-1\|

应转换为:

|Testing|ABC:1234\1000-1|

理想情况下,我想避免将'\'临时替换为另一个角色。使用.NET或正则表达式的解决方案是首选。

2 个答案:

答案 0 :(得分:5)

Regex.Replace(input, @"\\(.|$)", "$1");

[编辑:模式与OP中指定的所有可能情况都不匹配。感谢您的建议,GONeale和Alan M.]

答案 1 :(得分:0)

感谢您对Princess的回应,

然而,在其他一些情况下,它失败了。我正在使用此输入:

Regex.Replace(@"\L\\A\", @"\\(.)", "$1")

它正在返回:L\A\ 什么时候应该返回L\A。我知道你正在寻找任何其他字符“。”,但不知道如何解决它,因为有时候不会有其他字符。

我设法在C#中整理了一个有效(但略显冗长)的方法:

for (int i = 0; i < text.Length; i++)
{
    if (text[i] == '\\' && (i + 1 <= text.Length && text[i + 1] == '\\'))
        newText += '\\';
    else if (text[i] == '\\')
        newText += string.Empty;
    else
        newText += text[i];
}

但是更喜欢更优雅的东西。