Regex при поиске по всему списку

  • Автор темы Автор темы bhairava7
  • Дата начала Дата начала

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Реакции
15
Баллы
18
Здравствуйте!

Подскажите, пожалуйста, что делаю не так, мне нужно пробежаться по всем строкам списка, вытащить из каждой строки регуляркой значение баланса, и получить общий баланс всех строк, в строке он записан так BALANCE: 55.70, регулярка для него такая (?<=BALANCE:\ ).*(?=\ ]), в тестере все находит без проблем, а в цикле со списком не хочет.

Код:
Развернуть Свернуть Копировать
var AccountsBalance = project.Lists["AccountsBalance"];

string regex_balance = @"(?<=BALANCE:\ ).*(?=\ ])";

decimal totalBalance = 0;
decimal nowBalance = 0;

lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < AccountsBalance.Count; i++)
    {
        string str = AccountsBalance[i];
        string str_balance = System.Text.RegularExpressions.Regex.Match(str, regex_balance).ToString();
        str_balance = str_balance.Replace(".", ","); 
        nowBalance = System.Convert.ToDecimal(str_balance);
        totalBalance = totalBalance + nowBalance;
   
    }
    return totalBalance;
}
 
в строке он записан так BALANCE: 55.70,
может так тогда??? (?<=BALANCE:\s).*?(?=,)
 
в строке он записан так BALANCE: 55.70,
может так тогда??? (?<=BALANCE:\s).*?(?=,)
Не, с регуляркой все впорядке, там такая BALANCE: 55.70 ] структура, тут именно какой-то косяк в самом коде, в лог выдаётся сообщение "Входная строка имела неверный формат."
Кстати, может это из-за того, что в некоторых строках баланс отсутствует?
 
string str_balance = System.Text.RegularExpressions.Regex.Match(str, regex_balance).ToString();

а если еще трим делать к строке?
.ToString().Trim();
 
  • Оценить
Реакции: bhairava7

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)