【问题标题】:How can I convert this into a integer in Javascript?如何在 Javascript 中将其转换为整数?
【发布时间】:2013-01-17 06:20:48
【问题描述】:

我昨天问了一个类似的问题..如果我有例如 0-9999 ,我怎么能把它变成 09999 ,基本上删除 - 并在javascript中使它成为一个整数?

var = 0-9999

把它变成 9999 整数

或者 var = 2-9999 ,把它变成 29999

非常感谢

【问题讨论】:

  • 你有它作为字符串吗?我的意思是,var x = "2-9999"?因为var x = 2-9999-9997

标签: javascript


【解决方案1】:

这应该可以解决问题:

num = num.replace(/[^0-9]+/g, '') * 1;

它将去除所有非数字字符并将变量转换为整数。这是给你的jsFiddle demonstration

【讨论】:

  • 短:num = +num.replace(/\D/g, '')
  • @gilly3:聪明。 :) 我喜欢 +num 方法,但首先想到的是 *1
  • @gilly3 我认为您放弃了太多可读性,尽管我喜欢较短的正则表达式。 IMO * 1 在做什么与 + 前缀相比更明显。
【解决方案2】:

最明显和最基本的解决方案是:

var s = "1-2345";
var t = s.replace("-","");
var i = parseInt(t,10);

但这是在做很多假设并忽略任何错误。

【讨论】:

  • @ElliotBonneville 他只提供了破折号,但你是对的。喜欢你的解决方案,+1!
  • parseInt 会将09999 转换为0
  • @MikeChristensen 真的吗?不是 9999?
  • 别忘了你的基数。 :)
  • 这取决于浏览器,但较旧的浏览器将假定基数为 8 并返回 NaN009999。安全路线是parseInt(t, 10)
【解决方案3】:

试试这个:

var i = '0-9999';
var int = Number(i.replace('-', ''));
window.alert(int);

注意,在 Firefox 中,parseInt() 不能与前导零一起使用,除非您传入基数(这似乎是一个错误):

var int = parseInt(i.replace('-', ''), 10);

Fiddler

【讨论】:

【解决方案4】:

记住

var x = 2-9999

相同
var x = -9997

因为破折号被视为减法符号,除非您使用引号(单引号或双引号,没关系)。

因此,假设您正确引用了文本,您可以使用以下函数始终提取文本任何给定位置的字符(使用从零开始的索引)。

function extractChar(myString,locationOfChar){
    var y = myString.substring(0,locationOfChar-1)
    var z = myString.substring(locationOfChar+1)
    var s = y.concat(z)
    var i = parseInt(s,10)
    return i 
}

因此

var i = extractChar("2-9999",1)

将与

相同
var i = 29999

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多