Как убрать нули после запятой или точки из цены (валюты)

Я пытаюсь удалить конечные нули после , или . в валюте, все еще сохраняя знак валюты. Например, от €90.00 к €90, от 90.00€ к 90€ и от €90.33 к €90.33.

Пример можно найти ниже:

$('.product-price-wrapp').each(function() { 
    var productPrice = $(this).find('.price').text();
    var trimPrice = productPrice.substr(0,productPrice.indexOf(',')); 
 	productPrice.text(trimPrice);
});
body {
  padding: 20px;
  background: #20262E;
  font-family: Helvetica;
}

.price {
  color: green;
}

.price span {
  color: #747474;
} 

.price:first-child,
.price:last-child,
.price:nth-of-type(6){
  color: red;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>

<div class = "product-price-wrapp">
  <div class = "price"><span>Product Price</span> 90,00 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 90,30 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 90,45 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 92,67 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 33.33 €</div>
  <br>
  <div class = "price"><span>Product Price</span> £22.00</div>
  <br>
  <div class = "price"><span>Product Price</span> £72,22</div>
  <br>
  <div class = "price"><span>Product Price</span> £72,00</div>
</div>

РАБОЧАЯ ВЕРСИЯ: JSFiddle

Вы все замечательные, большое вам спасибо за вашу помощь! Кредит: @Cocest @A. Рамос @ Иван

Отредактируйте свой вопрос, чтобы я опубликовал ответ на вашу проблему

Cocest 12.01.2019 17:20

Привет, Cocest, я попытался отредактировать вопрос, но Роберт Харви все еще [приостановил]. Следует ли мне создать новый вопрос?

JustFrontend 12.01.2019 17:29

Я отредактировал вопрос для вас. Просмотрите это. Спасибо.

Cocest 12.01.2019 17:34

Попытайтесь объяснить, что делает пример кода

Cocest 12.01.2019 17:37

Большое вам спасибо за этот Cocest.

JustFrontend 12.01.2019 17:37

Итак, в примере кода я попытался создать цикл, который проверял бы каждый класс ценовых ведьм ".price", и если после него стоит 00, или. он заменит цену без нулей. Например, от 90,00 евро до 90 евро, от 90,00 евро до 90 евро и от 90,33 евро до 90,33 евро.

JustFrontend 12.01.2019 17:43

Я не думаю, что пример кода необходим. Может, стоит убрать

Cocest 12.01.2019 17:56

Я удалил код, думаю, теперь все в порядке?

JustFrontend 12.01.2019 18:10

@Cocest, код лучше оставить, он показывает, что пытался решить проблему. Вы должны вернуть код в исходное сообщение.

Ivan 12.01.2019 18:10
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
3
9
861
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте это решение. Он более гибкий, работает за любую цену.

var c = '90,00 €'; //assign currency (value)

c = /[.,]0*[1-9]+/.test(c) ? c : c.replace(/[.,]0+/, '');

// use the currency here

Вы можете использовать регулярное выражение, чтобы определить, содержит ли цена запятую: ,00 или .00, если это так, вы можете заменить ее пустой строкой.

Я использовал это регулярное выражение:

/[\.,]0{2}/
  • [\.,] ищет либо ., либо ,

  • 0{2} с двумя нулями

Вот полный код.

$('.product-price-wrapp > .price').each(function(index, element) {
  
  var priceElement = $(element);
  
  priceElement.text(
    'Product Price ' + priceElement.text().substring(14).replace(/[\.,]0{2}/, '')
  );
  
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>

<div class = "product-price-wrapp">
  <div class = "price"><span>Product Price</span> 90,00 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 90,30 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 90,45 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 92,67 €</div>
  <br>
  <div class = "price"><span>Product Price</span> 33.33 €</div>
  <br>
  <div class = "price"><span>Product Price</span> £22.00</div>
  <br>
  <div class = "price"><span>Product Price</span> £72,22</div>
  <br>
  <div class = "price"><span>Product Price</span> £72,00</div>
</div>
Ответ принят как подходящий

вам нужно добавить еще один контейнер для цены как таковой, если вам нужно сохранить цвет текста, потому что вы пытаетесь изменить текстовое содержимое ".price"

ваш код будет выглядеть так:

<div class = "product-price-wrapp">
  <div class = "price"><span>Product Price</span> <span class = "price_tag">90,00 €</span></div>
  ...
</div>

затем используйте шаблон регулярного выражения /(\d+)([.,]0+)/, чтобы удалить нули.

$('.product-price-wrapp .price .price_tag').each(function(){
   var price = $(this).text();
   price = price.replace(/(\d+)([.,]0+)/, "$1");
   $(this).text(price);
});

для шаблона регулярного выражения он имеет две группы захвата.

$ 1 = (\ d +): получает все одно или несколько чисел. $ 2 = ([.,] 0+): получает все конечные нули с точкой или запятой на его первом символе.

поэтому, когда мы использовали его в коде, мы все заменяли содержимое, которое соответствует шаблону [число (1 или более)] [запятая или точка, за которыми следуют конечные нули], а затем сохраняем только первую группу захвата, которая является числом ( один или больше).

Ваше решение не прошло следующие образцы: €20.02 и 20.02€

Cocest 13.01.2019 00:51

Привет, @Cocest, я полагаю, вы использовали мой код javascript, не меняя HTML-код. Я думаю, что это причина того, почему, с вашей стороны, он потерпел неудачу. PS. Он / она использовал мое решение на своем JFiddle, и оно работает. Спасибо!

A. Ramos 14.01.2019 17:33

Привет, @Ivan, ты можешь проверить это JFiddle. Я думаю, вы тоже забыли изменить свой html-код. Спасибо!

A. Ramos 14.01.2019 17:34

Я уже переходил по этой ссылке, суть в том, что если использовать например 92,07 €, не получится.

Ivan 14.01.2019 20:02

Другие вопросы по теме