Создать новую строку из старой строки, C # - PullRequest
1 голос
/ 12 августа 2010

Ввод:

X(P)~AK,X(MV)~AK

Ожидаемый результат:

P(curr=AK),MV(curr=AK)

Использование C # 3.0

Я решил с помощью строковых функций (разделить, затем добавить и т. Д.)

Ищем более нишевое решение (например, регулярное выражение)

Спасибо

Ответы [ 2 ]

7 голосов
/ 12 августа 2010
var output = Regex.Replace(input, @"X\(([A-Z]+)\)~([A-Z]+)", "$1(curr=$2)");

Это заменит все вхождения X(something1)~something2 на something1(curr=something2).Предполагается, что все «что-то» являются последовательностями символов верхнего регистра.

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

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

string process(string s)
{
    string ret = "";
    System.Text.RegularExpressions.Regex r = new Regex(@"X\(([A-Z]+)\)~([^,]+)\,?");
    bool first = true;
    foreach (Match m in r.Matches(s))
    {
        ret += (first ? "" : ",") + m.Groups[1] + "(curr=" + m.Groups[2] + ")";
        first = false;
    }
    return ret;
}
...