我需要了解如何获取字符串中第一个数字的索引。我有一个想法如何使用一些循环,但它会非常丑陋,所以我宁愿一些正则表达式。有人可以给我一个线索如何使用正则表达式来做到这一点?如何获得字符串中第一个数字的索引
回答
firstDigit = 'Testi2ng4'.match(/\d/) will give you the first digit in the string
indexed = 'Test2ing4'.indexOf(firstDigit)
嗯,我想我需要在我的方法更紧密地看,你可以做“Testin323g'.search(/ \ d /);
使用string.search找到指数与正则表达式\d
搜索: [最快的方法]
var str = "asdf1";
var search = str.search(/\d/)
console.log(search);
比赛: [比for循环慢,只是显示这样做的另一种方式] for循环是最快的
var str = "asdf1";
var match = str.match(/(\D+)?\d/)
var index = match ? match[0].length-1 : -1;
console.log(index);
我发现它很有趣,你指出我的速度最慢时,你的第一个解决方案比搜索速度慢了74%(我的速度慢了85%)。这就像两个人争论在赛马中哪只乌龟比较快。 – VoronoiPotato
http://jsperf.com/indexof-vs-searches – VoronoiPotato
如果你想要批判性地看待答案,也许你应该检讨一下自己的答案,你的第一个答案就是给我镀铬的NaN。你的第二个答案产生未定义,因为str.search返回一个整数而不是一个对象。 – VoronoiPotato
一比基于正则表达式的解决方案:
function indexOfNaN(input) {
let i = 0;
for (; input[i] >= '0' && input[i] <= '9'; i++);
return i;
}
在线试用!
jsbench(越高越好):
TestCase results for your browser Firefox version 54.0
Test name Benchmark results
indexOfNan 11,175,400 (±2.77)
regex search 3,787,617 (±5.22)
regex match 2,157,958 (±6.49)
regex match + indexOf 1,131,094 (±4.63)
如果你只是寻找一个衬垫,你也可以尝试一种函数式编程方法,并可以做类似如下:
let myStr = "ID12345";
let myStrIndex = myStr.indexOf(myStr.split('').filter(x => !isNaN(parseInt(x, 10)))[0]);
该字符串被分割成一个字符数组,过滤函数将该数组缩减为数字字符。新数组的第一个字符是字符串中的第一个数字字符,因此在该字符上使用indexOf会为您提供您正在查找的索引。
当然,如果字符串中没有数字字符,您将得到-1的索引。你也可以使用不同的检查,如果字符是数字函数作为参数.filter() - 我相信有更快的事情,如果这是一个问题
- 1. 如何获得字符串中第一个非空白字符的索引?
- 2. C#:如何获得一个字符串的第一个字符?
- 3. 树枝:如何获得字符串中的第一个字符
- 4. 如何从字符串中获得第一个字符的索引包含使用javascript的数字值
- 5. 如何获得字符串中“%”的最后一个索引?
- 6. 在bash字符串后如何获得的第一个数字
- 7. 如何获得的第一个字一个字符串在Excel
- 8. 如何获得C中字符串的字符索引?
- 9. 如何获得字符串中的字符索引?
- 10. 获取第n个索引字符串
- 11. 如何从字符串中获得第一组字母字符?
- 12. 查找字符串中字符的第一个索引
- 13. 字符串中第一个字符的T-SQL索引
- 14. 如何获得字符串中的第二个逗号的索引
- 15. 得到一个字符串中的字符集的索引
- 16. 如何查找字符串中的所有第一个索引?
- 17. 得到一个字符串的索引中的字符串数组
- 18. 获得第一个数字字符串标识符
- 19. 如何在python中获得数字或字符串的第二个数字?
- 20. 如何获得字符串的第n个字符?
- 21. 如何获取SQL中的字符串的第一个字符?
- 22. 如何获得第一个字符
- 23. 如何获得preg_match的第一个数字字符?
- 24. 如何获得Unicode字符串中的任何字符的索引
- 25. 第n个字符串的索引
- 26. 获取第一个包含子字符串的索引?
- 27. 如何从字符串中获得第一个iframe iframe iframe
- 28. 获取字符串中子字符串的第一个字母
- 29. 从字符串数组中获取第一个字符串c
- 30. 将字符串的第二个索引与数组字符串中的下一个字符串的第二个索引进行比较
“有一个想法如何做到这一点使用一些循环,但它会真的很丑,所以我更喜欢一些正则表达式。有人可以给我一个线索如何使用正则表达式??“ 有趣的是,我认为“一些循环”更容易阅读正则表达式.... – Anders
好吧,我应该说有效率和短于“丑陋”,但无论如何不要告诉我,几个if语句循环比一个正则表达式的行... – Husky
这非常依赖于正则表达式,但是这个非常简单,任何其他方式看起来都很愚蠢。 – VoronoiPotato