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. 文字列の "%"の最後のインデックスを取得する方法?
- 2. 文字列内の文字インデックスを取得する方法
- 3. Twig:文字列の最初の文字を取得する方法
- 4. SQLで文字列の最初の文字を取得する方法は?
- 5. 列の文字列の最初の文字を取得
- 6. BigDecimalの最初の非ゼロ桁を取得する方法
- 7. 特定の文字列の後に最初のパターンを取得する方法
- 8. 文字列の最初の2桁、負の「数字」
- 9. 文字列の最初の文字の取得と削除
- 10. は、文字列の最初の文字を削除し、私はこの文字列の最初の文字を取得する必要があり、文字列
- 11. インデックスを与えられた文字列の中で文字を取得する最速の方法(PHP)
- 12. PHP文字列から最初の3ワードを取得する
- 13. 部分文字列のインデックスを取得
- 14. フランス語のアクセントの文字列の最初の文字を取得します。
- 15. 2文字列の最大値を取得する方法
- 16. Python:リストの最初の文字列の最初の文字を取得しますか?
- 17. 文字列から大文字のインデックスを取得します
- 18. 文字列内の文字数を取得する方法
- 19. 最初のインスタンスを取得し、文字列
- 20. Scala - 文字列の最後の2文字を取得する
- 21. Rubyで文字列の最初のインデックスから最後までの部分を選択する方法は?
- 22. C文字列:文字列の最後の単語を取得
- 23. 部分文字列を取得する最適な方法は?
- 24. 文字列配列の部分文字列を取得する最良の方法は何ですか?
- 25. 文字列から最初のイメージを削除する方法
- 26. 最初のコロンで文字列を分割する方法
- 27. 文書の最初の文字を取得しますか?
- 28. 文字列の最後に数字を取得する方法は?
- 29. iPhoneの文字列の文字のインデックスを返す方法は?
- 30. 先行ゼロの数字の桁数を取得する方法
「は、いくつかのループを使用することを行う方法のアイデアを持っているが、それは希望心配だ場合より高速なものがあると確信しています本当に醜いので、私はいくつかの正規表現を好むだろう。誰かが私に手がかりを与えることができる正規表現を使用してそれを行うには? おかしいが、私は「いくつかのループ」を考えるその後、正規表現より読みやすいです.... – Anders
[OK]を、私はむしろ効率的で「醜い」よりも短いとしているはずですが、とにかく文が1よりも優れている場合、いくつかでループと私に教えていません正規表現の行... – Husky
これは非常に正規表現に依存しますが、これはとても単純ですが、他の方法はちょっとばかげているようです。 – VoronoiPotato