方法一:
判断英文单词个数:
using System;
namespace FindWord{
class Program {
static void Main(string[] args) {
string space = " ";
string str = "hello world" + space;
int count = 0;
bool start = false;
for (int i=0;
i<str.Length;
i++) {
if (Char .IsLetter(str[i])) {
start = true;
}
if (!Char.IsLetter(str[i])&&start) {
count++;
start = false;
}
}
Console.WriteLine(count);
Console.ReadLine();
}
}
}
方法二:
C#统计英文字符串中单词个数思路如下:
1.使用的Hashtable(高效)集合,记录每个单词出现的次数
2.采用ArrayList对Hashtable中的Keys按字母序排列
3.排序使用插入排序(稳定)
public void StatisticsWords(string path) {
if (!File.Exists(path)) {
Console.WriteLine("文件不存在!"); return;
}
Hashtable ht = new Hashtable(StringComparer.OrdinalIgnoreCase); StreamReader sr = new StreamReader(path, System.Text.Encoding.UTF8); string line = sr.ReadLine(); string[] wordArr = null;
int num = 0;
while (line.Length > 0) {
// MatchCollection mc = Regex.Matches(line, @"b[a-z]+", RegexOptions.Compiled | RegexOptions.IgnoreCase); //foreach (Match m in mc) //{
// if (ht.ContainsKey(m.Value)) // {
// num = Convert.ToInt32(ht[m.Value]) + 1;
// ht[m.Value] = num;
// }
// else // {
// ht.Add(m.Value, 1); // }
//}
//line = sr.ReadLine(); wordArr = line.Split(' '); foreach (string s in wordArr) {
if (s.Length == 0) continue;
//去除标点 line = Regex.Replace(line, @"[p{
P}
*]", "", RegexOptions.Compiled); //将单词加入哈希表 if (ht.ContainsKey(s)) {
num = Convert.ToInt32(ht[s]) + 1;
ht[s] = num;
}
else {
ht.Add(s, 1); }
}
line = sr.ReadLine(); }
ArrayList keysList = new ArrayList(ht.Keys); //对Hashtable中的Keys按字母序排列 keysList.Sort(); //按次数进行插入排序【稳定排序】,所以相同次数的单词依旧是字母序 string tmp = String.Empty;
int valueTmp = 0;
for (int i = 1;
i < keysList.Count;
i++) {
tmp = keysList[i].ToString(); valueTmp = (int)ht[keysList[i]];
//次数 int j = i;
while (j > 0 && valueTmp > (int)ht[keysList[j - 1]]) {
keysList[j] = keysList[j - 1];
j--;
}
keysList[j] = tmp;
//j=0 }
//打印出来 foreach (object item in keysList) {
Console.WriteLine((string)item + ":" + (string)ht[item]); }
}
您可能感兴趣的文章:
- C#统计字符串中数字个数的方法
- C#实现获取枚举中元素个数的方法
- C#统计字符串里中文汉字个数的方法
- c# n个数排序实现代码