【问题标题】:Jquery double split string and wrap results separatelyJquery双重拆分字符串并分别包装结果
【发布时间】:2015-02-19 14:12:36
【问题描述】:

我有一个字符串 $295.52 想拆分它并得到以下结果:

  <span>$</span>295.<span>52</span>

我尝试成功拆分逗号后的数字,但现在我无法掌握第一个字符。这是我的代码:

      $('.slprice').each(function () {
            var text = $(this).text().split('.');
            for (var i = 0, len = text.length; i < len; i++) {
                text[i] = '<span class="pricefix-' + i + '">' + text[i] + '</span>';
            }
            $(this).html(text.join(''));

       });

【问题讨论】:

  • 您遇到的具体问题是什么?您在提取第一个字符时遇到问题吗?您是否尝试过使用 substr() 方法?示例:var Currency = text.substr(0,1);

标签: jquery split pseudo-class


【解决方案1】:

您可以为此使用正则表达式,设置组以匹配您想要拆分到 span 元素的部分。像这样的:

var $container = $('#foo');
var re = /(\$)(\d+\.)(\d+)/;
$('.slprice').each(function () {
    var matches = $(this).text().match(re);
    $(this).html('<span>' + matches[1] + '</span>' + matches[2] + '<span>' + matches[1] + '</span>');
});

Example fiddle

【讨论】:

  • 宁愿选择第一个字符而不考虑它的值
  • 试试这个正则表达式:/(.{1})(\d+\.)(\d+)/
【解决方案2】:

我会这样做:FIDDLE

$('.slprice').each(function () {
        var text = $(this).text().split('.')
        var dollar_sign = text[0].substr(0, 1);
        var cents = text[1];
        var int = text[0].substr(1, 3);
        alert(dollar_sign);
        alert(cents);
        alert(int);
        //your other code

});

【讨论】:

  • 绝对答案,但在 int 上不是动态的。如果价格是 234454.90 美元会怎样
【解决方案3】:
function formatString(x)
{
y = x.split(".");
return "<span>"+y[0][0]+"</span>"+y[0].substr(1, y[0].length-1)+"<span>"+y[1]+"</span>";
}

并像使用它

$('.slprice').each(function () {
            var text = $(this).text().split('.');
            $(this).html(formatString(text));

       });

工作Fiddle

【讨论】:

  • 在这种情况下 $ 符号不会是动态的,
  • 货币符号$?为什么你的意思是它不会是动态的?为什么你需要它是动态的?
  • 货币可能因网站/翻译而异,例如 £ /
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2017-12-19
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多