Csharp: Searching Within a String
15840 ワード
1 /// <summary>
2 /// 20130118
3 ///
4 ///
5 ///
6 /// </summary>
7 public class StringSearchClass
8 {
9 /// <summary>
10 ///
11 /// StringIndexOf("1,2,3,4,5,6", "1,8");
12 /// </summary>
13 /// <param name="str1"> </param>
14 /// <param name="judgestr"> </param>
15 /// <returns> </returns>
16 public static bool StringIndexOf(string str1, string searchstr)
17 {
18 bool isExist = true;
19 str1 = "," + str1 + ",";
20 string[] strs = searchstr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
21 foreach (string strtemp in strs)
22 {
23 if (str1.IndexOf(',' + strtemp + ',') == -1)
24 {
25 isExist = false;
26 break;
27 }
28 }
29 return isExist;
30 }
31 /// <summary>
32 ///
33 ///
34 /// </summary>
35 /// <param name="str1"> </param>
36 /// <param name="judgestr"> </param>
37 /// <returns></returns>
38 public static bool StringContains(string str1, string searchstr)
39 {
40 bool isExist = true;
41 str1 = "," + str1 + ",";
42 string[] strs = searchstr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
43 foreach (string strtemp in strs)
44 {
45 if (!str1.Contains(',' + strtemp + ','))
46 {
47 isExist = false;
48 break;
49 }
50 }
51 return isExist;
52 }
53 /// <summary>
54 ///
55 ///
56 /// </summary>
57 /// <param name="str1"> </param>
58 /// <param name="judgestr"> </param>
59 /// <returns></returns>
60 public static bool StringRegex(string str1, string searchstr)
61 {
62 bool isExist = true;
63 str1 = "," + str1 + ",";
64 string[] strs = searchstr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
65 foreach (string strtemp in strs)
66 {
67 if (!Regex.Match(str1, strtemp, RegexOptions.IgnoreCase).Success)
68 {
69 isExist = false;
70 }
71 }
72 return isExist;
73 }
74 }
テスト:
1 //
2 Stopwatch sw = new Stopwatch();
3
4 sw.Start();
5 // bool s = StringIndexOf("1,2,3,4,5,6", "1,6");//True, :00:00:00.0003557
6 // bool s = StringContains("1,2,3,4,5,6", "1,6");//True, :00:00:00.0003625
7 bool s = StringRegex("1,2,3,4,5,6", "1,6");//False, :00:00:00.0286617 //True, :00:00:00.0008295 //True, :00:00:00.0008237
8 sw.Stop();
9 this.textBox1.Text=s.ToString()+", :"+sw.Elapsed.ToString();