Stringの最初の桁のインデックスを取得する方法を調べる必要があります。私はいくつかのループを使用してそれを行うアイデアを持っているが、それは本当に醜いので、私はいくつかの正規表現を好むだろう。誰か私に手掛かりを与えることができる正規表現を使用してそれを行うには?文字列の最初の桁のインデックスを取得する方法
答えて
firstDigit = 'Testi2ng4'.match(/\d/) will give you the first digit in the string
indexed = 'Test2ing4'.indexOf(firstDigit)
でインデックスを見つけるためまあ、私はあなただけ「Testin323g'.search(/ \ D /)を行うことができ、より密接に私の方法を見てする必要があります推測。
ゼロについてはどうですか? – epascarello
は、そして、それを編集した後、あなただけの衣替え\ dは – epascarello
ええ、私はちょっと彼が、私はそれが束のうち最も遅いですので、あなたがその一致/ indexOfのソリューションを選択していない願っています0 – VoronoiPotato
使用string.search正規表現\d
検索: [最速の方法]
var str = "asdf1";
var search = str.search(/\d/)
console.log(search);
マッチ:ループは最速であるため
var str = "asdf1";
var match = str.match(/(\D+)?\d/)
var index = match ? match[0].length-1 : -1;
console.log(index);
最初の解決策が検索よりも74%遅い(鉱山が85%遅くなる)のが最も遅いと指摘しているのは楽しいことです。これは、競馬の中でどのカメがより速いかを主張する2人の男性のようなものです。 – VoronoiPotato
http://jsperf.com/indexof-vs-searches – VoronoiPotato
あなたが答えを批評的に見せたいのであれば、あなた自身のレビューをしなければならないでしょう。最初の答えは私にNaN on chromeを与えます。str.searchはオブジェクトではなく整数を返すので、2番目の答えは未定義です。 – VoronoiPotato
A [forループよりも遅いが、ちょうどそれを行うための別の方法を示します]正規表現ベースのソリューションよりも:
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)
あなただけの1つのライナーを探していた場合は、また、関数型プログラミングのアプローチを試みることができると、次のような何かを行うことができます:
let myStr = "ID12345";
let myStrIndex = myStr.indexOf(myStr.split('').filter(x => !isNaN(parseInt(x, 10)))[0]);
文字列は文字の配列に分割され、フィルタ関数はその配列を数値文字に縮小します。新しい配列の最初の文字は文字列の最初の数字です。その文字のindexOfを使用すると、探しているインデックスが得られます。何の数文字が文字列内に存在しない場合は、結果としての-1インデックスを取得します。もちろん、
。 charが(.filterするパラメータとして多数の機能であれば、あなたも)別のチェックを使用することができます - 私はそれが
- 1. Javascript文字列の最初の3桁を取得する方法
- 2. 文字列の "%"の最後のインデックスを取得する方法?
- 3. 文字列の最初のシンボルを取得する方法
- 4. 文字列内の文字インデックスを取得する方法
- 5. リンクリストの文字列から最初の文字を取得する方法は?
- 6. Twig:文字列の最初の文字を取得する方法
- 7. SQLで文字列の最初の文字を取得する方法は?
- 8. 最初の文字列を取得してインデックスを取得しますか?
- 9. 列の文字列の最初の文字を取得
- 10. BigDecimalの最初の非ゼロ桁を取得する方法
- 11. インデックスの最初の文字を取得しますか?
- 12. VBの文字列配列の最初の6文字列を取得する
- 13. forループ内の文字列から最後のインデックスを取得する方法
- 14. 特定の文字列の後に最初のパターンを取得する方法
- 15. 文字列の最初の文字の取得と削除
- 16. 文字列の最初の2桁、負の「数字」
- 17. Excelで最初のスペースの後に文字列を取得する方法
- 18. 文字列または文字配列のインデックスを取得する最も良い方法は何ですか?
- 19. は、文字列の最初の文字を削除し、私はこの文字列の最初の文字を取得する必要があり、文字列
- 20. 文字列から最初のimgタグを取得する方法
- 21. 名前の頭文字を取得する文字列の最初の文字を取得
- 22. 文字列の最初の単語を取得する
- 23. C++ Stringstreamのみ最初の文字列を取得する
- 24. ループの最初の文字を配列から取得する
- 25. jQueryで文字列の最初のidを取得する
- 26. 文字列と最初の文字のインデックスの呼び出し
- 27. 大文字の文字列の最初の一致インデックスを見つける最速の方法
- 28. インデックスを与えられた文字列の中で文字を取得する最速の方法(PHP)
- 29. Rの文字列の最初の大文字のインデックスを取得しますか?
- 30. 文字列内の最初の文字のユニコード値を取得する
「は、いくつかのループを使用することを行う方法のアイデアを持っているが、それは希望心配だ場合より高速なものがあると確信しています本当に醜いので、私はいくつかの正規表現を好むだろう。誰かが私に手がかりを与えることができる正規表現を使用してそれを行うには? おかしいが、私は「いくつかのループ」を考えるその後、正規表現より読みやすいです.... – Anders
[OK]を、私はむしろ効率的で「醜い」よりも短いとしているはずですが、とにかく文が1よりも優れている場合、いくつかでループと私に教えていません正規表現の行... – Husky
これは非常に正規表現に依存しますが、これはとても単純ですが、他の方法はちょっとばかげているようです。 – VoronoiPotato