1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 using System.Collections;
6
7 namespace CSharp
8 {
9 public class Tokens : IEnumerable
10 {
11 private string[] elements;
12
13 public Tokens( string source, char[] delimiters )
14 {
15 //將字符串分析為標記
16 elements = source.Split( delimiters );
17 }
18
19 // IEnumerable 接口實現
20 // 聲明 IEnumerable 所需的GetEnumerator() 方法
21 public IEnumerator GetEnumerator()
22 {
23 return new TokenEnumerator( this );
24 }
25 // 內部實現 IEnumerator 接口
26 private class TokenEnumerator : IEnumerator
27 {
28 private int position = -1;
29 private Tokens t;
30
31 public TokenEnumerator( Tokens t )
32 {
33 this.t = t;
34 }
35
36 //聲明 IEnumerator 所需的 MoveNext() 方法
37 public bool MoveNext()
38 {
39 if ( position < t.elements.Length - 1 )
40 {
41 position++;
42 return true;
43 }
44 else
45 {
46 return false;
47 }
48 }
49
50 //聲明 IEnumerator 所需的 Reset 方法
51 public void Reset()
52 {
53 position = -1;
54 }
55
56 //聲明 IEnumerator 所需的 Current 屬性
57 public object Current
58 {
59 get
60 {
61 return t.elements[position];
62 }
63 }
64 }
65 }
66
67
68 class Program
69 {
70 static void Main( string[] args )
71 {
72 Tokens f = new Tokens( "This is a well-done program.",
73 new char[] { ' ', '-'} );
74
75 foreach ( string item in f )
76 {
77 Console.WriteLine( item );
78 }
79 }
80 }
81 }
82
2 using System.Collections.Generic;
3 using System.Text;
4
5 using System.Collections;
6
7 namespace CSharp
8 {
9 public class Tokens : IEnumerable
10 {
11 private string[] elements;
12
13 public Tokens( string source, char[] delimiters )
14 {
15 //將字符串分析為標記
16 elements = source.Split( delimiters );
17 }
18
19 // IEnumerable 接口實現
20 // 聲明 IEnumerable 所需的GetEnumerator() 方法
21 public IEnumerator GetEnumerator()
22 {
23 return new TokenEnumerator( this );
24 }
25 // 內部實現 IEnumerator 接口
26 private class TokenEnumerator : IEnumerator
27 {
28 private int position = -1;
29 private Tokens t;
30
31 public TokenEnumerator( Tokens t )
32 {
33 this.t = t;
34 }
35
36 //聲明 IEnumerator 所需的 MoveNext() 方法
37 public bool MoveNext()
38 {
39 if ( position < t.elements.Length - 1 )
40 {
41 position++;
42 return true;
43 }
44 else
45 {
46 return false;
47 }
48 }
49
50 //聲明 IEnumerator 所需的 Reset 方法
51 public void Reset()
52 {
53 position = -1;
54 }
55
56 //聲明 IEnumerator 所需的 Current 屬性
57 public object Current
58 {
59 get
60 {
61 return t.elements[position];
62 }
63 }
64 }
65 }
66
67
68 class Program
69 {
70 static void Main( string[] args )
71 {
72 Tokens f = new Tokens( "This is a well-done program.",
73 new char[] { ' ', '-'} );
74
75 foreach ( string item in f )
76 {
77 Console.WriteLine( item );
78 }
79 }
80 }
81 }
82