【问题标题】:JavaScript automatic commaJavaScript 自动逗号
【发布时间】:2017-09-10 22:14:00
【问题描述】:

在我的程序中,用户输入 0 到 8 之间的值。

例如:如果用户想输入“3,4”,他只需要写“34”。该程序最终会将逗号放入,但我不知道该怎么做。

所以:

  • 输入 = "34" --> 输出 = "3,4"

  • 输入 = "09" --> 输出 = "0,9"

这是我尝试过的,但它当然会接受“34”作为整数:

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

我也尝试过拆分输入,但是当用户输入像 3 这样的整数时,它就不再起作用了。

这个问题没有更深层次的意义,只是为了让用户输入更快。

【问题讨论】:

  • x.toString().split('').join(',')?
  • stackoverflow.com/questions/12556051/… 这个帖子可能会给你一些线索..
  • 我在 Zach 之前就厌倦了这个,它只适用于 > 1 的数字。如果用户输入“09”,不幸的是,它会变成“9”。
  • 你的问题是你想在每个数字后面加一个逗号?如果是这样,那么在正则表达式中删除该函数中的 3。

标签: javascript comma


【解决方案1】:

你应该:

  1. 将输入数字转换为字符串(toString);
  2. 将每个字符之间的字符串拆分成一个数组(split);
  3. 加入此数组的元素,以, (join) 分隔。

这里是完整的代码:

function numberWithCommas(x) {
    return x.toString().split("").join(",");
}

【讨论】:

  • 谢谢,我的错误是我首先将用户输入解析为一个数字,然后我尝试添加一个逗号。这适用于像“34”这样的数字,但不适用于“09”,因为它会自动生成一个“9”。
  • 如果它来自文本输入框,您甚至不需要toString 它。文本框值已经是一个字符串。
【解决方案2】:

Regex 在这里有点矫枉过正,不是吗?

function numberWithCommas(x) {
  return x < 10 ? x.toString() : x.toString().split('').join(',');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2016-11-09
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多