close

之前因為工作上有需求
必須將一長串的字串進行反轉.然後對照另一個字串
由於工作上都是紙本作業.所以再把"字串反轉"這件事情上來講
就顯得很耗時間 因為那串字串並不是十幾二十個字而已

所以~就有了如何把字串進行處理 讓他前後顛倒的小程式測試
首先呢 反正佈局大概就是兩個文字 一個負責輸入要反轉的字串
一個就是把結果輸出
畫面大略如下
image

反轉的處理如下

    //取得來源字串
    string SRC = textBox1.Text;
    //將取得的字串 轉換成陣列
    char[] ArraySRC = SRC.ToCharArray();
    //反正整個字串陣列的順序
 
   Array.Reverse(ArraySRC);
    //使用迴圈取出該陣列的元素 逐一加到結果輸出
   for (int k = 0; k < ArraySRC.Length; k++)
    {
        textBox2.Text = textBox2.Text + ArraySRC[k].ToString();
    }

 


在這裡要說明的是
字串物件必須透過迴圈的方式將元素逐一取出
因此如果字串的長度較大 就會形成轉換成陣列時 必須以較大的陣列容納 在逐一取出
而對效能的影響就不可說不大

因此~改良版出現了....

    //取得來源字串
    string SRC = textBox1.Text;
    //將取得的字串 轉換成陣列
    char[] ArraySRC = SRC.ToCharArray();
    //反轉整個字串陣列的順序
    Array.Reverse(ArraySRC);
    //透過初始化將已經反轉的陣列值 再轉換為 字串
    SRC = new string(ArraySRC);

    //輸出結果
    textBox2.Text = SRC;


好吧~我承認有點傷害大家的感情
整個程式碼只有黃色部分取代了之前的迴圈
透過new 關鍵字的宣告 重新宣告 SRC為一個字串物件 而且指定其來源為ArraySRC 也就是已經被我們反轉過順序的陣列
透過這樣的方法 我們只要直接將"新的"SRC取出他的字串就可以了 而不需要使用迴圈的方式
當然這是只有在反轉整段字串時才有用的方法 如果程式需要做比對或者判斷.或者替代~當然還是免不了要使用迴圈

有興趣的朋友可以將上面兩段程式碼進行測試
然後給一段很長的字串(幾百個字就行了)進行測試 就可以發現其效能上的差異了

arrow
arrow
    全站熱搜

    ADOLPH 發表在 痞客邦 留言(2) 人氣()