Показать сообщение отдельно
  #1 (permalink)  
Старый 03.09.2009, 20:51
giplex
 
Сообщений: n/a

Извлечение дробного числа из строки
Здравствуйте! Из строк, которые печатает кассовый терминал в чеке, например:
Код:
1.Шоколад Нестле классик 100 гр....139.50
2.Яйцо 1 категории Гайфа 1\10.........175.20
3.Сок Джуси 1,0 л Грейпфрут...........190.60
необходимо извлекать стоимость товара, т.е. 139.50, 175.20 и 190.60. Когда терминал был настроен на печать стоимости без копеек проблем не было и эта задача решалась следующим фрагментом:

function processSale()
{
    var index = data.lastIndexOf(".");
    var saleAmount = data.substring(index + 1, data.length);
    saleAmount = parseFloat(saleAmount);
    var index1 = data.indexOf(".");
    var lastChar = null;
    for(var i = data.length - 1; i >=0; i--)
    {
        var ch = data.charAt(i);
        if(ch != '.' && lastChar == '.')
        {
            break;
        }
        lastChar = ch;
    }
    var productName = data.substring(index1 + 1, i + 1);
    productName = trim(productName);

    var reg = /(\S)+X\d/;
    var matches = reg.exec(data);
    saleProductsCount = 1;
    if(matches != null)
    {
        var s = matches[0];
        var array = s.split('X');
        var saleProductsCount = array[0];
        saleProductsCount = parseFloat(saleProductsCount);
        if(isNaN(saleProductsCount))
        {
            saleProductsCount = 1;
        }
    }
    listenerObject.pushNewSale(productName);
    listenerObject.pushSaleAmount(saleAmount);
    listenerObject.pushSaleProductsCount(saleProductsCount);
}


но когда настроили терминал на печать копеек, то извлекаются цифры после последней точки, т.е. в нашем примере это 50, 20 и 60 и заносятся в базу данных как стоимость указанного в примере товара, что не соответствует действительности. Подскажите где в приведенном фрагменте и какие внести изменения, чтобы правильно разбиралась строка, пришедшая из кассового терминала. Заранее СПАСИБО!!!

Последний раз редактировалось Octane, 03.09.2009 в 21:00. Причина: используйте теги [js] и [html] для оформления кода
Ответить с цитированием