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`.
【讨论】:
最后一行不正确 :3log.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?