замена строкового макроса - PullRequest
0 голосов
/ 14 октября 2011

У меня есть приложение Visual Studio 2008 C # .NET 3.5, в котором мне нужно проанализировать макрос.

Учитывая серийный серийный номер длиной N цифр и макрос типа %SERIALNUMBER3%, я хотел быэтот метод разбора возвращает только первые 3 цифры серийного номера.

string serialnumber = "123456789";
string macro = "%SERIALNUMBER3%";
string parsed = SomeParseMethod(serialnumber, macro);

parsed = "123"

Учитывая `% SERIALNUMBER7%, вернуть первые 7 цифр и т. Д.

Я могу сделать это, используя String.IndexOf и некоторую сложность, но мне было интересно, было ли простоеметод.Может быть, использовать Regex replace.

Какой самый простой способ сделать это?

Ответы [ 3 ]

1 голос
/ 14 октября 2011
var str = "%SERIALNUMBER3%";
var reg = new Regex(@"%(\w+)(\d+)%");
var match = reg.Match( str );
if( match.Success )
{
    string token = match.Groups[1].Value;
    int numDigits = int.Parse( match.Groups[2].Value );
}
0 голосов
/ 14 октября 2011

Очень быстрый и грязный пример:

static void Main(string[] args)
        {
            string serialnumber = "123456789";
            string macro = "%SERIALNUMBER3%";

            var match = Regex.Match(macro, @"\d+");

            string parsed = serialnumber.Substring(0, int.Parse(match.ToString()));
        }
0 голосов
/ 14 октября 2011

Используйте класс Regex.Ваше выражение будет выглядеть примерно так:

@"%(\w)+(\d)%"

Ваша первая группа захвата - это идентификатор (в данном случае «SERIALNUMBER»), а вторая группа захвата - это количество цифр (в данном случае «3«).

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