Удалите одиночные обратные слэши, конвертируйте двойные в одинарные в строке - PullRequest
2 голосов
/ 04 декабря 2008

Как лучше всего преобразовать случаи двойной обратной косой черты в одну обратную косую черту в строке, но удалить все случаи одиночной обратной косой черты?

Итак, это:

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

Следует преобразовать в это:

|Testing|ABC:1234\1000-1|

В идеале я хочу избежать временной замены символа \ на другой символ. Решение с использованием .NET или регулярных выражений является предпочтительным.

Ответы [ 2 ]

5 голосов
/ 04 декабря 2008
Regex.Replace(input, @"\\(.|$)", "$1");

[Edit: Pattern не соответствует всем возможным случаям, указанным в OP. Спасибо за предложения, GONeale и Alan M.]

0 голосов
/ 04 декабря 2008

Спасибо за ваш ответ принцесса,

Однако в некоторых других случаях это не удается. Я использую этот вход:

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];
}

Но предпочел бы что-нибудь более элегантное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...