Javascript中带逗号的数字

vwoqyblh  于 2023-01-07  发布在  Java
关注(0)|答案(4)|浏览(139)

我有一个javascript函数,它接受一个数字并对数字进行数学运算。然而,我传递的数字可能包含一个逗号,根据我有限的使用Javascript的经验,我在处理这个值时遇到了问题。它似乎没有将其视为数字类型。
将值为1000的参数转换为数值1000的最简单方法是什么?

cig3rfwq

cig3rfwq1#

更新答案:

逗号分隔的数字是特定于语言的,并非所有数字都使用此系统。
Stackoverflow上有很多错误/不完整的答案,这些答案是为特定的本地人量身定制的,或者是建议NPM的第三方脚本,我认为这是一种矫枉过正。
以下是一系列“一点也不好”的答案:

  1. How do I convert String to Number according to locale (opposite of .toLocaleString)?
  2. Is there any JavaScript standard API to parse to number according to locale?
    这里有一个特别的好答案,可以解决多个地区的问题:
    https://stackoverflow.com/a/45309230/104380

上一个答案:

将逗号分隔的数字字符串转换为数字类型(也称为 * 类型转换 *)

+"1,234".split(',').join('') // outputs 1234

细目

+             - math operation which casts the type of the outcome into type Number
"1,234"       - Our string, which represents a comma delimited number
.split(',')   - split the string into an Array: ["1", "234"], between every "," character
.join('')     - joins the Array back, without any delimiter: "1234"

一个简单的函数是:

function stringToNumber(s){
  return +s.split(',').join('');
}
ujv3wf0j

ujv3wf0j3#

您可以将文本框设置为具有onblur()函数,这样当用户试图离开文本框时,您就可以使用javascriptreplace函数从值中删除逗号

示例

function checkNumeric(objName)
  {
    var lstLetters = objName;

    var lstReplace = lstLetters.replace(/\,/g,'');
  }

输入标记如下:

<input type="text" onblur="checkNumeric(this);" name="nocomma" size="10" maxlength="10"/>
myzjeezk

myzjeezk4#

一种快速而又不太常用的方法是使用String.replace()方法:

var rawstring = '1,200,000';
var cleanstring = rawstring.replace(/[^\d\.\-\ ]/g, '');

这会将cleanstring设置为:1200000。假设您使用的是US格式,则将发生以下转换:

1234 --> 1234
1,234 --> 1234
-1234 --> -1234
-1,234 --> -1234
1234.5 --> 1234.5
1,234.5 --> 1234.5
-1,234.5 --> -1234.5
1xxx234 --> 1234

如果您使用的是颠倒.“”和,“”的其他语言环境,则必须在正则表达式中进行更改。

相关问题