1
/// <summary>
2
/// 将中文数字替换为阿拉伯数字
3
/// </summary>
4
/// <param name="word"></param>
5
/// <returns></returns>
6
public static string WordToNumber(string word)
7
{
8
string e = "([零一二三四五六七八九十百千万亿])+";
9
MatchCollection mc = Regex.Matches(word, e);
10
11
foreach(Match m in mc)
12
{
13
word = word.Replace(m.Value, foh(m.Value).ToString());
14
}
15
return word;
16
}
17
18
private static string Word2Number(string w)
19
{
20
if(w == "")
21
return w;
22
23
string e = "零一二三四五六七八九";
24
string[] ew = new string[]{"十", "百", "千"};
25
string ewJoin = "十百千";
26
string[] ej = new string[]{"万", "亿"};
27
28
string rss = "^([" + e + ewJoin + "]+" + ej[1] + ")?([" + e
29
+ ewJoin + "]+" +ej[0] + ")?([" + e + ewJoin + "]+)?$";
30
string[] mcollect = Regex.Split(w, rss);
31
if(mcollect.Length < 4)
32
return w;
33
return (
34
Convert.ToInt64(foh(mcollect[1])) * 100000000 +
35
Convert.ToInt64(foh(mcollect[2])) * 10000 +
36
Convert.ToInt64(foh(mcollect[3]))
37
).ToString();
38
}
39
40
private static int foh(string str)
41
{
42
string e = "零一二三四五六七八九";
43
string[] ew = new string[]{"十", "百", "千"};
44
string[] ej = new string[]{"万", "亿"};
45
46
int a = 0;
47
if(str.IndexOf(ew[0]) == 0)
48
a = 10;
49
str = Regex.Replace(str, e[0].ToString(), "");
50
51
if(Regex.IsMatch(str, "([" + e + "])$"))
52
{
53
a += e.IndexOf(Regex.Match(str, "([" + e + "])$").Value[0]);
54
}
55
56
if(Regex.IsMatch(str, "([" + e + "])" + ew[0]))
57
{
58
a += e.IndexOf(Regex.Match(str, "([" + e + "])" + ew[0]).Value[0]) * 10;
59
}
60
61
if(Regex.IsMatch(str, "([" + e + "])" + ew[1]))
62
{
63
a += e.IndexOf(Regex.Match(str, "([" + e + "])" + ew[1]).Value[0]) * 100;
64
}
65
66
if(Regex.IsMatch(str, "([" + e + "])" + ew[2]))
67
{
68
a += e.IndexOf(Regex.Match(str, "([" + e + "])" + ew[2]).Value[0]) * 1000;
69
}
70
return a;
71
}

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
