Помогаем сделать простое регулярное выражение - PullRequest
0 голосов
/ 07 мая 2010

Мне нужно reg выражение, что делает это "123.12312" -> "123.32" или "23.323" -> "23.32" в c #. Должно быть только 2 цифры после точки :)

Ответы [ 4 ]

2 голосов
/ 07 мая 2010

Предполагается, что вы анализируете строку, и она имеет как минимум 2 цифры после точки:

/[0-9]+\.[0-9]{2}/
0 голосов
/ 07 мая 2010

Я действительно не знаю, как регулярное выражение работает в C #, но это мое регулярное выражение

([0-9]+)(?:\.([0-9]{1,2})|)[0-9]*

Группа 1 получит часть до точки, а группа 2 (если существует) даст часть за точкой (2 цифры длиной)

код здесь будет производить все совпадения из строки:

StringCollection resultList = new StringCollection();
try {
    Regex regexObj = new Regex(@"([0-9]+)(?:\.([0-9]{1,2})|)[0-9]*", RegexOptions.Singleline);
    Match matchResult = regexObj.Match(subjectString);
    while (matchResult.Success) {
        resultList.Add(matchResult.Value);
        matchResult = matchResult.NextMatch();
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
0 голосов
/ 07 мая 2010

Есть ли особая причина, по которой вам нужно использовать регулярные выражения?Я думаю, что было бы лучше сделать что-то вроде String.Format("{0:0.00}", double).Список некоторых полезных примеров форматирования можно найти по адресу http://www.csharp -examples.net / string-format-double /

0 голосов
/ 07 мая 2010

Я знаю, что вы спрашиваете о Regex, но это похоже на лучшее соответствие Double.TryParse с последующим правильным форматированием.

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