如何从价格(货币)中删除逗号或点后的零

时间:2019-01-12 15:19:54

标签: jquery html css

有人试图删除货币中,.之后的尾随零,但仍保留货币符号。例如,€90.00€9090.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。拉莫斯@Ivan

3 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来检测价格是否包含尾随逗号:,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>

答案 1 :(得分:-1)

尝试此解决方案。它更加灵活,可以以任何价格使用。

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

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

// use the currency here

答案 2 :(得分:-1)

如果您要保留文本的颜色,则需要添加另一个容器作为价格本身,因为您正试图更改“ .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个或更多)] [逗号或点后跟零结尾]相匹配的内容,然后仅保留第一个捕获组,即数字(一个或多个)。