「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]
コメントを追加