1
class Program
2
{
3
static void Main(string[] args)
4
{
5
string str1 = "";
6
string str2 = "中";
7
8
Console.WriteLine(str1.IndexOf(str2));
9
Console.WriteLine(StringIndexOf(str1, str2));
10
11
Console.ReadKey();
12
}
13
14
/// <summary>
15
/// 实现字符串的IndexOf 功能
16
/// </summary>
17
/// <param name="strMain"></param>
18
/// <param name="strExtre"></param>
19
/// <returns></returns>
20
static int StringIndexOf(string strMain, string strExtre)
21
{
22
if (strMain == null || strExtre == null)
23
throw new Exception("String cannot be null.");
24
if (strExtre.Length == 0) return 0;
25
if (strExtre.Length > strMain.Length) return -1;
26
27
//返回值
28
int index = -1;
29
//获取附加字符串首字符
30
char c = strExtre[0];
31
//在主字符串中搜索首字符
32
for (int i = 0; i < strMain.Length; i++)
33
{
34
//不匹配的话继续搜索
35
if (false == strMain[i].Equals(c)) continue;
36
37
int Length = 1;
38
//从次首字符开始比较
39
for (int j = 1; j < strExtre.Length; j++)
40
{
41
if ((i + j) >= strMain.Length) break;
42
if (false == strMain[i + j].Equals(strExtre[j])) break;
43
Length++;
44
}
45
//条件匹配即退出
46
if (Length == strExtre.Length)
47
{
48
index = i;
49
break;
50
}
51
}
52
53
return index;
54
}
55
}

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
