String.Split()メソッドまたはC#のLinq Lambda式を使用して、指定された文字列から分割文字の長さを見つける最良の方法は何ですか?

ラマ・スバ・レディM

「RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa」という文字列があります。ギブストリングで使用可能な「a」文字の数を知りたい。私の知識によると、私はカウントを見つけるために2つの方法を見つけました。つまり、1)String.Split()を使用する2)LinqLambda式

私の観察:

1)String.Split()を使用すると、間違った結果が返されます。2)Linq Lambda式を使用すると、正しい結果が返されます。

ここで私の疑問は、String.Split()を使用して、指定された文字列から指定された分割文字の数を取得する方法です。

また、「String.Split()」または「LinqLambda」式のいずれかで指定された文字列から指定された分割文字の数を取得するための最良の方法を教えてください。

完全な例を見つけてください:

                                                                                                                   using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SplitData
{
    class Program
    {
        static void Main(string[] args)
        {
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'a');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'r');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'R');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'm');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'd');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'g');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 's');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'o');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'c');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'u');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'f');


            Console.ReadKey();
        }

        private static void SplitData(string data,char split)
        {

            // using lambda expresion
            int len = data.AsEnumerable().Where(x => x.ToString().ToLower().Contains(split)).Count();  
            Console.WriteLine("Total '" + split + "' available are:{0} using lambda", len.ToString());

            //using normal split function
            len = data.Split(split).Length;

            Console.WriteLine("Total '" + split + "' available are:{0} using normal split", len.ToString());


        }
    }
}
ハビブ
string str = "RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa";
int countA = str.Count(r => r == 'a');

大文字と小文字を区別しないカウントが必要な場合は、次のようにします。

string str = "RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa";
char searchChar = 'a';
int countA = str.Count(r => char.ToUpperInvariant(r) == char.ToUpperInvariant(searchChar));

string.SplitとLinq Count、次にIMOの間で最適なオプションを要求する、LINQの方が読みやすくなります。パフォーマンスについてはよくわかりませんが、LINQバージョンの方が速いと思います。


使用string.Splitして大文字と小文字を区別しないようにする場合は、2つの要素(大文字と小文字)の文字配列を作成してから、次のSplitように使用します

string str = "RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa";
char searchChar = 'a';
char[] delimeters = new char[2];
delimeters[0] = char.ToLowerInvariant(searchChar);
delimeters[1] = char.ToUpperInvariant(searchChar);
var count = str.Split(delimeters).Length - 1;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ