Coffeescript:如何将字符串转换为数字?

Posted

技术标签:

【中文标题】Coffeescript:如何将字符串转换为数字?【英文标题】:Coffeescript: how do I convert a string to a number? 【发布时间】:2012-05-30 01:21:26 【问题描述】:

我正在构建一个在 POST 请求中发送的 JSON 对象。 该对象具有在发送前需要从字符串类型转换为整数类型的属性。如何使用咖啡脚本做到这一点?

【问题讨论】:

【参考方案1】:

我总是使用按位或将字符串转换为整数

"99.999" | 0 // returns 99

【讨论】:

【参考方案2】:

stringToConvernt = "$13,452,334.5"
output = Number(stringToConvernt.replace(/[^0-9\.]/g, ''))
console.log(output)
//The output is `13452334.5`.

【讨论】:

最后一行不正确 :3 log.console -> console.log【参考方案3】:

基于nXqd's answer中提到的链接,您还可以通过将字符串乘以1来隐式转换:

'123' * 1 // 123

对于不正确的输入,它的行为正确:

'123abc' * 1 // NaN

你也可以用浮动来做到这一点:

'123.456' * 1 // 123.456

【讨论】:

【参考方案4】:

这是满足您需求的简单方法。 NaN 将按预期返回。

parseInt( "09asdf".match(/^\d+$/)?[0] ? NaN,  10)

【讨论】:

【参考方案5】:

我不建议使用 parseInt,因为在一种情况下它是错误的 - 我发现:

parseInt('09asdf', 10); 
#> return 09 which is not correct at all. It should return NaN

正确答案应该是来自@Corkscreewe 的答案。还有一个:

cleanInt = (x) ->
  x = Number(x)
  (if x >= 0 then Math.floor(x) else Math.ceil(x))

向https://coderwall.com/p/cbabhg学习

【讨论】:

【参考方案6】:

使用 javascript parseInt 函数。

number = parseInt( stringToParse, 10 );

参考是here。

记住,coffeescript 只是编译后的 javascript

【讨论】:

使用 parseInt 时要注意八进制数。 始终指定radix,例如parseInt( stringToParse, 10 ) 这在一种情况下失败:parseInt('98asdfsdf',10),这将返回98,这根本不正确。 @nXqd 垃圾输入,垃圾输出 - parseInt 用于将字符串(由基数指定的符号/基数)转换为整数。不可能知道引用代码的意图是什么,但如果您的实际目的是将十六进制字符串转换为整数,则需要更改基数,例如parseInt('98asdfsdf', 16)【参考方案7】:

官方手册中还没有记录,但似乎演员也可以工作:

myString = "12323"
myNumber = (Number) myString

【讨论】:

这不是一个强制转换运算符,它将(Number) 解释为一个函数(忽略括号),myString 作为其参数。所以它编译为Number(myString),确实有预期的效果。【参考方案8】:

您可以使用不那么明显、更神奇、键盘密集度较低的运算符 +:

+"158"

【讨论】:

太酷了!我找不到有关此功能的任何文档,您从哪里了解到的? 这不是coffeescript的功能,它是一个javascript一元运算符,意思是数字前面的加/减。请注意,使用此功能时您可能会很快遇到麻烦:a = true; +a++ + +(++a) alert(id +"123") 和 alert(id + "123") 产生不同的结果吗? 另请注意,空字符串 +"" 结果为零 0【参考方案9】:

Javascript 的 parseInt 函数将实现这一点。请记住设置 radix 参数以防止混淆并确保可预测的行为。 (例如在 Coffeescript 中)

myNewInt = parseInt("176.67", 10)

MDN 资源中有几个很好的例子:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

【讨论】:

以上是关于Coffeescript:如何将字符串转换为数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 转换为 CoffeeScript 并写入文件“.coffee”?

如何将 JavaScript for 循环转换为 CoffeeScript?

将coffeescript函数转换为javascript

将 CoffeeScript 项目转换为 JavaScript(不缩小)? [关闭]

java如何将数字转换为英文

python如何将字符转换为数字