Разбор чисел из строки с помощью регулярных выражений в VB.NET - PullRequest
2 голосов
/ 16 февраля 2010

Я пытаюсь разобрать цифры для сохранения в переменной из строки в VB.NET (хотел бы также включить десятичную точку).

Вот пример строки: Refund issued for $27.74

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010

Как уже указывал casperOne, одного примера недостаточно, чтобы дать полное решение.

Строка регулярного выражения может выглядеть как "\\$([0-9]+\\.[0-9]+)" или "Refund issued for \$(?<Value>[0-9]+\.[0-9]+)". Последнее является более ограничительным. Во втором примере также используется именованная группа. Это может упростить извлечение совпадений после вызова Regex.Match, если у вас более сложный сценарий.

Хорошим инструментом для работы с регулярными выражениями в стиле .net является Expresso.

1 голос
/ 16 февраля 2010

Для этого на самом деле не нужно регулярное выражение, поскольку простая итерация и сравнение каждого символа от 0 до 9 (или вызов статического метода IsNumber в структуре Char ) сделает это (извините за код C #, его легко перевести на VB.NET):

static IEnumerable<char> GetNumericCharacters(this string s)
{
     // Check for null.
     if (s == null) throw new ArgumentNullException("s");

     // Iterate through the characters.
     foreach (char c in s)
     {
         // If a number, return it.
         if (char.IsNumber(c)) yield return c;
     }
}

Конечно, регулярное выражение так же просто:

[0-9]

Вы можете использовать класс RegEx, чтобы получить все совпадения для этого шаблона и объединить их вместе.

Единственное время, когда каждое из этих решений дает сбой, - это когда у вас несколько номеров в разных контекстах, например ::

"Пользователь купил 10 предметов по $ 0,99 каждый"

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