【问题标题】:Split number by decimal and return back as 2 separate elements按十进制拆分数字并作为 2 个单独的元素返回
【发布时间】:2013-05-23 12:27:04
【问题描述】:

这是一个棘手的任务。我有这样的价目表:

<span class="price">10.99€/span>
<span class="price">1.99€/span>

我需要把这个变成这个

<span class="price">10<span class="decimal">.99</span></span>
<span class="price">1<span class="decimal">.99</span></span>

到目前为止,我是这样处理的

$(".price").each(function() {
    var PriceArray = ($(".price").text());
    var re = /\s*€\s*/
    var PriceArraySplit = PriceArray.split(re) // I remove Euro sign
});

此外,据我了解,我需要将每个数字按十进制拆分并将其存储在数组中,然后使用该数组中的新值替换值。

这就是我的大脑溢出的地方。

【问题讨论】:

  • “作为 2 个独立的元素” - 你所说的“独立”是指“嵌套”吗?

标签: javascript jquery arrays split


【解决方案1】:

试试看:

 $(".price").each(function(){
      var $this = $(this),
          PriceArray = $this.text().split('.');
      $this.html(PriceArray [0]+'<span class="decimal">.'+PriceArray [1].replace('€','')+'</span>');
    })

【讨论】:

  • 我怎样才能修改这段代码,不仅可以用“。”分割也可以用“,”。我正在尝试 $this.text().split('.') || $this.text().split(','),但这不起作用。有没有简单的解决方案,或者我需要编写一个 if/else 函数来检查是否有“。”或字符串中的“,”
  • split 接受正则表达式作为参数:PriceArray = $this.text().split(/[.,]/); jsfiddle.net/ACyXQ
【解决方案2】:

这是我想到的first second方式:

$("span.price").html(function(i,oldHtml) {
   return oldHtml.replace(/(\.\d+)€?/,'<span class="decimal">$1</span>');    
});

演示:http://jsfiddle.net/tAHW3/1/

应该是不言自明的;如果没有,阅读 .html().replace()JS regular expressions 的一些文档应该会有所帮助。

【讨论】:

    【解决方案3】:

    您可以像这样使用split()replace() 函数:

    $(".price").each(function() {
        var s = $(this).text().split(".");
        $(this).html(s[0] + '<span class="decimal">.' +  s[1].replace('€','') + '</span>');
    });
    

    这是FIDDLE

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      相关资源
      最近更新 更多