【发布时间】:2025-12-26 21:40:17
【问题描述】:
我想从 javascript 中的字符串中获取 int 我如何从
中获取它们test1、stsfdf233、fdfk323、
有人告诉我从这个字符串中获取整数的方法吗?
这是一个规则,int总是在字符串的后面。
我怎样才能得到最后在我的字符串中的 int
【问题讨论】:
标签: javascript
我想从 javascript 中的字符串中获取 int 我如何从
中获取它们test1、stsfdf233、fdfk323、
有人告诉我从这个字符串中获取整数的方法吗?
这是一个规则,int总是在字符串的后面。
我怎样才能得到最后在我的字符串中的 int
【问题讨论】:
标签: javascript
var s = 'abc123';
var number = s.match(/\d+$/);
number = parseInt(number, 10);
第一步是一个简单的正则表达式 - \d+$ 将匹配接近末尾的数字。
在下一步中,我们在之前匹配的 字符串 上使用parseInt,以获得正确的数字。
【讨论】:
parseInt 的第一步是在输入上调用ToString,在本例中是一个数组,然后是一个字符串。请参阅 ECMA-262 规范中的第 15.1.2.2 节。
1 == [1] 是 true,甚至 [[[[2]]]] == 2 - JavaScript 也将单元素数组视为元素。我猜 JavaScript 是一门草率的语言 :)
您可以使用regex 通过String#match 提取字符串中的数字,并通过parseInt 将每个数字转换为数字:
var str, matches, index, num;
str = "test123and456";
matches = str.match(/\d+/g);
for (index = 0; index < matches.length; ++index) {
num = parseInt(matches[index], 10);
display("Digit series #" + index + " converts to " + num);
}
如果数字确实只出现在字符串的末尾,或者您只想转换您找到的 first 组数字,您可以稍微简化一下:
var str, matches, num;
str = "test123";
matches = str.match(/\d+/);
if (matches) {
num = parseInt(matches[0], 10);
display("Found match, converts to: " + num);
}
else {
display("No digits found");
}
如果您想忽略不在末尾的数字,请将$ 添加到正则表达式的末尾:
matches = str.match(/\d+$/);
【讨论】:
/\d+$/。酷if,顺便说一下:)
$ 的东西,我在示例中捕捉到了它,但没有意识到我在文本中输入了它(我通常 从示例复制到文本,而不是相反)。
if(matches) 我敢肯定这会比依靠parseInt() 为你做更快的测试。
var str = "stsfdf233";
var num = parseInt(str.replace(/\D/g, ''), 10);
【讨论】:
var match = "stsfdf233".match(/\d+$/);
var result = 0; // default value
if(match != null) {
result = parseInt(match[0], 10);
}
【讨论】:
还有另一种选择,这次没有任何替换或正则表达式,只有一个简单的循环:
function ExtractInteger(sValue)
{
var sDigits = "";
for (var i = sValue.length - 1; i >= 0; i--)
{
var c = sValue.charAt(i);
if (c < "0" || c > "9")
break;
sDigits = c + sDigits;
}
return (sDigits.length > 0) ? parseInt(sDigits, 10) : NaN;
}
使用示例:
var s = "stsfdf233";
var n = ExtractInteger(s);
alert(n);
【讨论】:
parseInt(sDigits, 10),试试abc012,然后abc09。
这可能对你有帮助
var str = 'abc123';
var number = str.match(/\d/g).join("");
【讨论】:
使用我对 String 类的扩展:
String.prototype.toInt=function(){
return parseInt(this.replace(/\D/g, ''),10);
}
然后:
"ddfdsf121iu".toInt();
将返回一个整数:121
【讨论】:
第一个正数或负数:
"foo-22bar11".match(/-?\d+/); // -22
【讨论】:
javascript:alert('stsfdf233'.match(/\d+$/)[0])
Global.parseInt 和 radix 在这里是多余的,正则表达式已经提取了十进制数字并正确修剪了字符串
【讨论】: