c#中正規表示式 和 集合 的知識點

GeekWay發表於2012-07-27

正規表示式

在正規表示式中,在使用轉義字元“\”時,需要在字串前加上“@”符號。

string input = "zhangsan@sina.com";
string patten = @"[a-zA-Z]+@[a-zA-Z]+\.com$";    //前需+“@”
                              
Regex r = new Regex(pattern);
Match m = r.match(input);
if(m.success){
}
 


正則的使用(摘抄的幾個比較容易混淆的):

“ab*”:匹配有一個a後面緊跟著0個或若干個b的字串,如“a”、“ab”、“abb”……
“ab?”:匹配有一個a後面緊跟著0個或1個b的字串,如“a”、“ab”。
“ab{2}”:匹配有一個a跟著兩個b的字串,即“abb”。
“ab{2,}:匹配有一個a跟著多個b的字串,即“abb”、“abbb”……。
“a.[0-9]”:匹配有一個a後面跟著一個任意字元和一個數字的字串。
“^.{3}$”:匹配有任意三個字元的字串。
“[abcd]”:表示一個字串中有一個a或b或c或d,相當於“a|b|c|d”或者[a-d]。
 


如驗證URL:

http://www.php.net

其構造規則為:

[協議]://[www].[域名].[com|net|org]

正規表示式為:

“^http://(www.)(0,1).+\.(com|net|org)$”
 


輸出二維陣列好生麻煩!

int[][] Array =new int[][]
            {
                new int[]{1,3,5,7,9},
                newint[]{2,4,6,8,10},
                new int[]{1,2}
            };
 
            for(int i = Array.GetLowerBound(0); i <= Array.GetUpperBound(0);i++)
            {
                for(int j = Array[i].GetLowerBound(0); j <= Array[i].GetUpperBound(0); j++)
                {
                    Console.WriteLine(Array[i][j]);
                }
            }
 
 
 

集合

       集合是一組類似的物件。在c#中,任意型別的物件都可以放入一個集合中,並將其視為Object型別。

所在的名稱空間:System.Collections
其常用的類或結構如下:

System.Collections中的集合種類
                               ArrayList
                               BitArray
                               Hashtable
                               Queue
                               Stack
                               DictionaryBase
                               SortedList

可以分為以下3類:

1.      一般集合

一般集合是常見的集合資料結構,包括雜湊表、佇列、堆疊、字典和列表等。簡單說明如下:

列表(ArrayList):一個一維的動態陣列,可以裝在一組相似的資料元素。
佇列(Queue):
堆疊(Stack):
雜湊表(Hashtable):集合中的每個元素都是一個<鍵(key),值(value)>對的列表。
字典(Dictionary):一個<鍵(key),值(value)>對。

2.      專用集合

 專用集合是具有特定用途的集合,例如StringCollection類,其元素只能為String物件。

3.      位集合

位集合的元素為為標誌,每個元素都是一位,而不是一個物件,常用於運算元又包含0和1的集合應用。

 

主要講解:

1.      ArrayList

常用的形式為:

Public ArrayList();
Public ArrayList(int capacity); // capacity表示含有的元素個數
 

ArrayListarr1 = new ArrayList();//注:如果不指定,則初始容量為.net的預設值16
ArrayListarr2 = new ArrayList(100);
 


注:ArrayList中可以存放任何型別的變數,而List型別需要配合模板的使用,並且元素之間必須是同一型別。如:

Debug視窗顯示:

ArrayListArrayList1 = newArrayList();
ArrayList1.Add("hello");
ArrayList1.Add(2343);
List<int>List1 = new List<int> () { 15, 45, 487, 789 };
//輸出
foreach (objecti in ArrayList1)
{
    Console.WriteLine(i);
}
 
foreach (inti in List1)
{
    Console.WriteLine(i);
}


 

2.      Queue類

最主要的方法為入隊操作Enqueue和出隊操作Dequeue。其他Queue支援的方法,例如遍歷、清空等,和ArrayList類似。

常用的形式有:

public Queue();//如果不指定,則初始容量為.net的預設值32
public Queue(int capacity);//初始個數
public Queue(int capacity,float growFactor);//growFator為容量的增長率,預設值為2.0


建立3個物件:

Queue queue1 = new Queue();
Queue queue2 = new Queue(100);
Queue queue3 = new Queue(100, 1.5f);   
 
 
Queuequeue1=new Queue();
 
//依次入隊:"Hello"、、{1,2,3}
queue1.Enqueue("Hello");
queue1.Enqueue(1);
queue1.Enqueue(newint[]{1,2,3});
 
//通過出隊操作,輸出佇列中的所有元素,這個順序,與入隊的順序一致
objectoutItem=new object();
while(queue1.Count>0)
{
    outItem=queue1.Dequeue();
    Console.WriteLine("{0}",outItem);
}


注:Queue也是可以賦上任何型別的值。

 

3.      Stack類

常用的形式

:
public Stack();//預設為10
public Stack(int capacity);

如:

Stack Stack1 = new Stack();
Stack Stack2 = new Stack(100);


常用操作:
Stack1.push();
Stack1.pop();
 


4.      Hashtable類和 SortList類

 

 

相關文章