Заменить строку с регулярным выражением - PullRequest
3 голосов
/ 12 августа 2010

У меня есть ситуация ниже

Дело 1:

Ввод: X(P)~AK,X(MV)~AK

Заменить на: AP

Выход: X(P)~AP,X(MV)~AP

Дело 2:

Ввод: X(PH)~B$,X(PL)~B$,X(MV)~AP

Заменить на : USD$

Выход: X(PH)~USD$,X(PL)~USD$,X(MV)~USD$

Как можно понять, всегда будет заменяться ~<string>.

Можно ли добиться того же с помощью регулярного выражения?

Примечание: ~ Во время компиляции ничего не будет известно, кроме структуры. Типичная структура

идет как

X(<Variable Name>)~<Variable Name>

Я использую C # 3.0

Ответы [ 2 ]

5 голосов
/ 12 августа 2010

Это простое регулярное выражение сделает это:

~(\w*[A-Z$])

Вы можете проверить это здесь:

http://regexhero.net/tester/

Выберите вкладку Заменитьat RegexHero.

Введите ~(\w*[A-Z$]) в качестве регулярного выражения.

Введите ~AP в качестве строки замены.

Введите X(P)~AK,X(MV)~AK в качестве целевой строки.

Вы получите это как вывод:

X(P)~AP,X(MV)~AP

В идиоме C # у вас будет что-то вроде этого:

class RegExReplace
{
    static void Main()
    {
        string text = "X(P)~AK,X(MV)~AK";

        Console.WriteLine("text=[" + text + "]");

        string result = Regex.Replace(text, @"~(\w*[A-Z$])", "~AP");

        // Prints: [X(P)~AP,X(MV)~AP]
        Console.WriteLine("result=[" + result + "]");

        text = "X(PH)~B$,X(PL)~B$,X(MV)~AP";

        Console.WriteLine("text=[" + text + "]");

        result = Regex.Replace(text, @"~(\w*[A-Z$])", "~USD$");

        // Prints: [X(PH)~USD$,X(PL)~USD$,X(MV)~USD$]
        Console.WriteLine("result=[" + result + "]");
    }
}
0 голосов
/ 12 августа 2010

Почему бы не использовать string.Replace (string, string)?

...