【问题标题】:Loop through numbers in a string (numbers only)循环遍历字符串中的数字(仅限数字)
【发布时间】:2016-07-14 04:14:35
【问题描述】:

我试图通过在字符串周围包裹<span> 标记来突出显示字符串的第 4、第 5 和第 6 个数字。该字符串包含数字、逗号、美元符号和偶尔的点。

这是我的字符串:

"$116,023,150"

我希望输出完全相同,除了第 4、第 5 和第 6 个数字被包裹在 <span> 标记中。我尝试使用for() 循环遍历字符串。但是,我不希望任何其他字符影响计数(仅字符串中的数字)。

"$116,<span>0</span><span>2</span><span>3</span>,150"

假设字符串不同,我仍然希望将第 4、第 5 和第 6 个数字包裹在 &lt;span&gt; 标记中。

"$61,0<span>0</span><span>2</span>.<span>1</span>2" == "$61,002.12"

如何使用 Javascript / jQuery 实现这一点?

【问题讨论】:

  • 你试过Number.isInteger(value)吗?
  • 目前还不清楚在 span 标签中包含什么值得。你能举出更多的例子吗?还是仅仅是因为它们是字符串中的第 4 到第 6 位?
  • String#split 怎么样?
  • 如果字符串是$16,023,150 会怎样……标准是模糊的。另外,您做了哪些研究,您尝试过哪些代码来解决这个问题?

标签: javascript jquery


【解决方案1】:

我会使用带有替换功能的正则表达式,根据数字的“索引”,它被包裹在&lt;span&gt; 标签中。 (不是真正的索引,它是当前到该数字的位数)

$("div").html(function(_, old) {
  var i = 0;
  return old.replace(/\d/g, function(num) {
    i++;
    return i >= 4 && i <= 6 ? "<span>" + num + "</span>" : num;
  });
});
span { font-weight: bold }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>$116,023,150</div>
<div>$61,002.12</div>

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2016-01-24
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2019-09-07
    相关资源
    最近更新 更多