方法一:
判断英文单词个数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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.排序使用插入排序(稳定)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
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]);
}
}
|