在C#中要統(tǒng)計(jì)一個(gè)字符出現(xiàn)在字符串中的次數(shù)我們有N種實(shí)現(xiàn)方法,下面我總結(jié)了幾種統(tǒng)計(jì)字符串出現(xiàn)資次數(shù)實(shí)例與大家分享。 例1
代碼如下 |
復(fù)制代碼 |
計(jì)算一個(gè)字符串中的某個(gè)子串出現(xiàn)的次數(shù),有沒有好的方法?
/// <summary>
/// 計(jì)算字符串中子串出現(xiàn)的次數(shù)
/// </summary>
/// <param name=”str”>字符串</param>
/// <param name=”substring”>子串</param>
/// <returns>出現(xiàn)的次數(shù)</returns>
static int SubstringCount(string str, string substring)
{
if (str.Contains(substring))
{
string strReplaced = str.Replace(substring, “”);
return (str.Length – strReplaced.Length) / substring.Length;
}
return 0;
}
int count = SubstringCount(“ddddfdfhgfjghjhgjghjhjhjhjhj”, “gh”);
|
例2 哈希表
代碼如下 |
復(fù)制代碼 |
Hashtable ht = new Hashtable();
string sr = "aaabbcddddd";
char[] cr = sr.ToCharArray();
foreach (char ch in cr)
{
if (ht.ContainsKey(ch))
{
int i = (int)ht[ch];
ht.Remove(ch);
ht.Add(ch, ++i);
}
else
ht.Add(ch, 1);
}
foreach (DictionaryEntry dicEntry in ht)
{
Console.WriteLine("{0}出現(xiàn){1}次", dicEntry.Key, dicEntry.Value);
}
ArrayList alist = new ArrayList(ht.Values);
alist.Sort();
object o = (object)alist[alist.Count - 1];
foreach (DictionaryEntry dicEntry in ht)
{
if (dicEntry.Value == o)
{
string str = dicEntry.Key.ToString();
Console.WriteLine("出現(xiàn)次數(shù)最多的字符:{0},共{1}次", str, o.ToString());
break;
}
}
Console.ReadLine();
|
例3 linq
代碼如下 |
復(fù)制代碼 |
string s = "aaabccccef";
char[] c = s.ToCharArray();
var cc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).ToList();
for (int i = 0; i < cc.Count; i++)
{
Console.WriteLine("{0}t{1}", cc[i].Key.ToString(), cc[i].Count().ToString());
}
var ccc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).First().ToList();
Console.WriteLine("{0}出現(xiàn){1}次!", ccc[0].ToString(), ccc.Count().ToString());
Console.ReadKey();
|
在C#中要統(tǒng)計(jì)一個(gè)字符出現(xiàn)在字符串中的次數(shù)我們有N種實(shí)現(xiàn)方法,下面我總結(jié)了幾種統(tǒng)計(jì)字符串出現(xiàn)資次數(shù)實(shí)例與大家分享。 例1
代碼如下 |
復(fù)制代碼 |
計(jì)算一個(gè)字符串中的某個(gè)子串出現(xiàn)的次數(shù),有沒有好的方法?
/// <summary>
/// 計(jì)算字符串中子串出現(xiàn)的次數(shù)
/// </summary>
/// <param name=”str”>字符串</param>
/// <param name=”substring”>子串</param>
/// <returns>出現(xiàn)的次數(shù)</returns>
static int SubstringCount(string str, string substring)
{
if (str.Contains(substring))
{
string strReplaced = str.Replace(substring, “”);
return (str.Length – strReplaced.Length) / substring.Length;
}
return 0;
}
int count = SubstringCount(“ddddfdfhgfjghjhgjghjhjhjhjhj”, “gh”);
|
例2 哈希表
代碼如下 |
復(fù)制代碼 |
Hashtable ht = new Hashtable();
string sr = "aaabbcddddd";
char[] cr = sr.ToCharArray();
foreach (char ch in cr)
{
if (ht.ContainsKey(ch))
{
int i = (int)ht[ch];
ht.Remove(ch);
ht.Add(ch, ++i);
}
else
ht.Add(ch, 1);
}
foreach (DictionaryEntry dicEntry in ht)
{
Console.WriteLine("{0}出現(xiàn){1}次", dicEntry.Key, dicEntry.Value);
}
ArrayList alist = new ArrayList(ht.Values);
alist.Sort();
object o = (object)alist[alist.Count - 1];
foreach (DictionaryEntry dicEntry in ht)
{
if (dicEntry.Value == o)
{
string str = dicEntry.Key.ToString();
Console.WriteLine("出現(xiàn)次數(shù)最多的字符:{0},共{1}次", str, o.ToString());
break;
}
}
Console.ReadLine();
|
例3 linq
代碼如下 |
復(fù)制代碼 |
string s = "aaabccccef";
char[] c = s.ToCharArray();
var cc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).ToList();
for (int i = 0; i < cc.Count; i++)
{
Console.WriteLine("{0}t{1}", cc[i].Key.ToString(), cc[i].Count().ToString());
}
var ccc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).First().ToList();
Console.WriteLine("{0}出現(xiàn){1}次!", ccc[0].ToString(), ccc.Count().ToString());
Console.ReadKey();
|
|