[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
2022-07-12 20:38:18
質問
ある文字列が別の文字列の中に出現する位置を、大文字と小文字を区別せずに見つけようとしています。
例えば、文字列が与えられた場合。
私はレバノンでウクレレを習いました。
と検索文字列
le
のように,配列を取得したい.
[2, 25, 27, 33]
どちらの文字列も変数になります。つまり、その値をハードコードすることはできません。
私はこれが正規表現のための簡単なタスクであると考えましたが、うまくいくものを見つけるのにしばらく格闘した後、私は運がなかったです。
私が見つけたのは
この例
を使用してこれを達成する方法の
.indexOf()
しかし、きっともっと簡潔なやり方があるはずです。
どのように解決するのですか?
var str = "I learned to play the Ukulele in Lebanon."
var regex = /le/gi, result, indices = [];
while ( (result = regex.exec(str)) ) {
indices.push(result.index);
}
アップデイト
元の質問で、検索文字列が変数である必要があることを見落としました。私はこのケースに対処するために、別のバージョンを書きました。
indexOf
を使用する別のバージョンを書きましたので、元に戻ります。コメントで Wrikken が指摘したように、正規表現でこれを一般的なケースで行うには、特殊な正規文字をエスケープする必要があります。
function getIndicesOf(searchStr, str, caseSensitive) {
var searchStrLen = searchStr.length;
if (searchStrLen == 0) {
return [];
}
var startIndex = 0, index, indices = [];
if (!caseSensitive) {
str = str.toLowerCase();
searchStr = searchStr.toLowerCase();
}
while ((index = str.indexOf(searchStr, startIndex)) > -1) {
indices.push(index);
startIndex = index + searchStrLen;
}
return indices;
}
var indices = getIndicesOf("le", "I learned to play the Ukulele in Lebanon.");
document.getElementById("output").innerHTML = indices + "";
<div id="output"></div>
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] JavaScriptで変数が文字列かどうかをチェックする
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] ドット記法の文字列を使用してオブジェクトの子プロパティにアクセスする [重複].
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] uint8配列をbase64エンコードされた文字列に変換する方法は?
-
[解決済み] node.js シェルコマンドの実行
-
[解決済み] コンソールで変数のトレースを行う場合、どのように改行すればよいのでしょうか?
-
[解決済み] async-await from functionを使用して非同期関数から値を返すには?重複