我有一个文档,我想从大列表中提取特定数字。使用子字符串提取数字
我不能在这里列出整个代码,为了简单起见,我将展示一个示例,因为代码不是必需的。
例如,说我有下面出现一个列表:
1: text,
2: more text,
3: etc
这将是易于使用的子捕获只有字符串,这将是我以后的数的第一个字母。然而,当它达到10或100时会发生什么?请记住,我无法改变列表的格式或内容,我只能接收其中的值。
有没有一种方法来得到只有数字,没有字符串?
我有一个文档,我想从大列表中提取特定数字。使用子字符串提取数字
我不能在这里列出整个代码,为了简单起见,我将展示一个示例,因为代码不是必需的。
例如,说我有下面出现一个列表:
1: text,
2: more text,
3: etc
这将是易于使用的子捕获只有字符串,这将是我以后的数的第一个字母。然而,当它达到10或100时会发生什么?请记住,我无法改变列表的格式或内容,我只能接收其中的值。
有没有一种方法来得到只有数字,没有字符串?
使用正则表达式。
像
var matches = "121: test".match(/^(\d*):\s/)
var val;
if (matches && matches.length > 0) val = matches[1]
此正则表达式有一堆的东西,你可能会或可能不会需要
^
意味着行的开头
()
手段捕捉到这组
\d*
意味着尽可能多你在连续发现的数字
:
是你在你的例子中的冒号
\s
是冒号后的单空格字符,在你的榜样
因为我们定义(\ d *),匹配方法将捕获匹配的那部分(数字),并使其在阵列中提供。
为什么不使用正则表达式呢?
'100: asds'.replace(/^(\d+):.+$/, '$1'); // 100
你可以得到的位置 ':' 再这样string.substring(0,位置)
var str="1000: this is a string";
var number = str.substring(0,str.search(':')); // 1000
你做CA,直到子的indexOf( “:”); 示例代码:
var str="100: Hello world!";
document.write(str.substring(0, str.indexOf(":")));
你得到100结果。 希望这有助于!运气好的话,
这是一个很好的解决方案,但不幸的是,第一个条目在开头就有{{无论如何感谢您的答案。 –
尝试
// limit split to 1 to avoid unnecessary splits
var num = "1000: rest of string".split(":", 1)[0];
我跑这里给出的jsPerf方法的一些测试结果here
检索所需数量的最快方法是
"1000: rest of string".substring(0, str.indexOf(":"));
如果速度很重要,那么正确的答案应该发送给用户编码器。
您可以使用Reguler表达式:
var s = "1: text,\n"+
"2: more text,\n"+
"3: etc\n";
var matches = s.match(/\d+/ig);
for(var i=0;i<matches.length;++i){
console.log(matches[i]);
}
可能正则表达式将是一个更好的选择适合你,但如果你所需要使用上建议的解决方案,U可以执行以下操作以摆脱“{”
if(str.contains("{"))
{
str.replace("{", "");
}
这美丽的工作,感谢你在最后加上[1]的额外努力,它确保我只能找到第一个数字,这样我就不会再有其他数字出现了。我认为它应该是一个0虽然,除非我的意图错误,无论如何,我有一些工作从它 –
不,第一项int数组(索引0)是整个比赛,这是更只是数字(它有':'和空格) – hvgotcodes
啊,我现在看到,我只用/ \ d +/ig。感谢您的帮助,正则表达式是我想要了解的更多内容,并且您已经很好地解释了它。 –