[解決済み】文字列の中にある文字列(実際はchar)の出現回数を数えるには?
2022-03-23 23:34:55
質問
今、あることをやっていて、その中で、「何個あるのか」を数えたいことに気がつきました。
/
そして、それを行うにはいくつかの方法があることに気づきましたが、最も良い(または最も簡単な)方法を決めることができませんでした。
今のところ、こんな感じにしています。
string source = "/once/upon/a/time/";
int count = source.Length - source.Replace("/", "").Length;
でも、全然好きじゃないんだ、誰か買ってくれる人いないかな?
あまり掘り起こしたくはないのですが
RegEx
このためでしょうか?
私の文字列には、私が検索している用語が入ることが分かっているので、それを想定してください...
もちろん文字列の場合 ここで 長さ > 1 ,
string haystack = "/once/upon/a/time";
string needle = "/";
int needleCount = ( haystack.Length - haystack.Replace(needle,"").Length ) / needle.Length;
解決方法は?
.NET 3.5を使用している場合、LINQを使用してワンライナーでこれを行うことができます。
int count = source.Count(f => f == '/');
LINQを使いたくなければ、これでできる。
int count = source.Split('/').Length - 1;
驚くかもしれませんが、あなたのオリジナルのテクニックは、これらのどちらよりも約30%速いようです! 私はちょうど "/once/upon/a/time/" で簡単なベンチマークを行ったところ、以下のような結果が得られました。
<ブロッククオート
あなたのオリジナル=12秒
ソース.Count = 19s
ソース.スプリット = 17s
各
bobwienholtの回答より
) = 10s
(時間は50,000,000回繰り返した場合のものなので、実世界で大きな違いを感じることはないでしょう)。
関連
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】文字列中のある文字の出現回数をカウントする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] 2つのリストを結合する
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】WebResource.axdとは何ですか?