#javascript #jquery #replace
#javascript #jquery #заменить
Вопрос:
Я пытаюсь преобразовать строку валюты в число. Я использую функцию replace с регулярным выражением, которое я успешно использовал в аналогичном контексте ранее.
Строка валюты записывается здесь, в рамках цикла «each»:
var unitGridPrice = jQuery(this).find(".clsPriceGridDtlPrice").html();
В результате получается, что unitGridPrice представляет собой строку валюты, что-то вроде «$ 2.75». Я пытаюсь преобразовать его в число здесь:
var priceToConvert = unitGridPrice;
var unitGridPriceNo = Number(priceToConvert.replace(/[^0-9.] /g, ''));
Однако с этой последней строкой скрипт не будет запущен.
Если я использую значение priceToConvert, оно правильно отображает текстовую строку валюты, поэтому я считаю, что строка, передающая функцию replace, верна.
если я изменю «var priceToConvert = unitGridPrice» на «var priceToConvert = «$ 2.75», скрипт правильно вернет 2.75. Я могу скопировать и вставить значение, отображаемое unitGridPrice, в текстовую строку, с которой я тестирую, и это работает, но с переменной там сценарий умирает.
Я попытался удалить регулярное выражение, изменив replace на .replace(‘$’, «), и снова скрипт останавливается с переменной на месте, но работает, если я тестирую с фиксированной строкой.
Я действительно в тупике. Помогите ??!! Спасибо!!!
Комментарии:
1. Что вы имеете в виду, когда скрипт умирает? Вы получаете какие-либо ошибки?
2. Что вам
console.log(unitGridPrice)
показывает?3. Сценарий не завершается, и я получаю сообщение об ошибке «priceToConvert равно null» Я попытался принудительно вывести вывод вызова jQuery с помощью функции «String» (хватаясь за соломинку), и сообщение об ошибке изменилось на «Строка не определена». В том же коде, если я удаляю функцию replace и присваиваю unitGridPrice переменной «priceToConvert», я получаю именно ту строку, которую пытаюсь преобразовать. Непонятно. Мне нужно поспать над этим.
4. Я снова попытался добавить функцию «String» для проверки сообщения об ошибке, но теперь код работает так, как ожидалось. Вау! (Я думаю) Я закрываю его на ночь и пытаюсь посмотреть, что происходит завтра. Надеюсь, он останется функциональным, пока я заканчиваю этот небольшой проект. Спасибо за помощь, приветствуется любое другое понимание того, что может происходить.
Ответ №1:
некоторое время назад у меня возникла некоторая проблема при попытке получить число из строки. проблема заключается в регулярном выражении, поэтому я изменил регулярное выражение, как показано ниже.
var id = element.name.replace ( /[^d.]/g, '' );
element.name выше, как input_21, input_22 и т.д., и я хочу получить только число (21,22).
надеюсь, это может вам помочь. 🙂