我需要了解如何獲取字符串中第一個數字的索引。我有一個想法如何使用一些循環,但它會非常醜陋,所以我寧願一些正則表達式。有人可以給我一個線索如何使用正則表達式來做到這一點?如何獲得字符串中第一個數字的索引
回答
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