0

.NETには次のような文字列があります。

string str = "Lorem ipsum is great. lorem ipsum Lorem...";

ケースに一致するすべての「Lorem」のカウントも取得する必要があります。したがって、Loremは2回表示され、loremを無視する必要があります。

ありがとう。

4

6 に答える 6

8
string str = "Lorem ipsum is great. lorem ipsum Lorem...";
string word = "Lorem";
Console.WriteLine(Regex.Matches(str,word).Count);
于 2012-10-22T21:09:08.923 に答える
6

Linqを使用できます。

String searchWhat = "Lorem";
int count = str.Split(new[]{' ','.'}, StringSplitOptions.None)
               .Count(w => w == searchWhat);

デモ: http: //ideone.com/a9XHln

編集:「LoremLoremo」は2としてカウントされるとコメントしたので、その単語が別の単語の一部であっても、特定の単語(大文字と小文字を区別する)のすべての出現をカウントする必要があります。次に、使用できますString.Contains

int count = str.Split(new[]{' ','.'}, StringSplitOptions.None)
               .Count(w => w.Contains(searchWhat));

デモ: http: //ideone.com/fxDGuf

于 2012-10-22T21:06:44.903 に答える
0

以下のコードを使用してください。

using System.Text.RegularExpressions;

string text = "Lorem ipsum is great. lorem ipsum Lorem...";
int count = new Regex("Lorem").Matches(text).Count;

それがあなたを助けることを願っています。そうでない場合は私に知らせてください。

于 2012-10-22T21:31:00.677 に答える
0

を使用して行うことができますLinq

string str = "Lorem ipsum is great. lorem ipsum Lorem...";
int loremCount = str.Split(new[]{' ','.',','}, StringSplitOptions.None).Count(s => s.Equals("Lorem"));

「ロレモ」を検討したい場合:

int loremCount = str.Count(s => s.Equals("Lorem"));
于 2012-10-22T21:06:37.693 に答える
0

これが私の2セントです。センシティブな「Lorem」ケースのすべてのインスタンスが検出されますが、「Loremo」や「thismightnotLorembewhatyouwant」など、「Lorem」が含まれているもののカウントが返されます。

質問は少し曖昧だったので、この答えはあなたが要求したものに一致する迅速な解決策です。

string test = "Lorem ipsum is great. lorem ipsum Lorem...";

int pos = -1;
int count = 0;
while ((pos = test.IndexOf("Lorem", pos+1)) != -1)
    count++;
于 2012-10-22T21:14:45.303 に答える
0

これで他の操作を実行できるようにする場合は、文字列全体をリストにダンプしてから、そのリストからLinqクエリを実行できます。

var phrase = "Lorem ipsum...";
var wordList = phrase.Split(' ').ToList();
var loremCount = wordList.Where(x => x.ToLower() == "lorem").Count();

このようにして、wordListは再利用可能です。

于 2012-10-22T21:16:43.867 に答える