在C#中要統計一個字符出現在字符串中的次數我們有N種實現方法,下面我總結了幾種統計字符串出現資次數實例與大家分享。
例1
代碼如下 復制代碼
計算一個字符串中的某個子串出現的次數,有沒有好的方法?
/// <summary>
/// 計算字符串中子串出現的次數
/// </summary>
/// <param name=”str”>字符串</param>
/// <param name=”
substring”>子串</param>
/// <returns>出現的次數</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 哈希表
代碼如下 復制代碼
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}出現{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("出現次數最多的字符:{0},共{1}次", str, o.ToString());
break;
}
}
Console.ReadLine();
例3 linq
代碼如下 復制代碼
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}出現{1}次!", ccc[0].ToString(), ccc.Count().ToString());
Console.ReadKey();
在C#中要統計一個字符出現在字符串中的次數我們有N種實現方法,下面我總結了幾種統計字符串出現資次數實例與大家分享。
例1
代碼如下 復制代碼
計算一個字符串中的某個子串出現的次數,有沒有好的方法?
/// <summary>
/// 計算字符串中子串出現的次數
/// </summary>
/// <param name=”str”>字符串</param>
/// <param name=”
substring”>子串</param>
/// <returns>出現的次數</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 哈希表
代碼如下 復制代碼
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}出現{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("出現次數最多的字符:{0},共{1}次", str, o.ToString());
break;
}
}
Console.ReadLine();
例3 linq
代碼如下 復制代碼
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}出現{1}次!", ccc[0].ToString(), ccc.Count().ToString());
Console.ReadKey();