2013年10月20日 星期日

刪除字串中的空白,使用了IEnumeraor,toCharArray,三元運算

本章運用了前幾張所介紹本章將會使用到的技巧
如果忘記的話可以看看之前所寫的筆記
關於 IEunmerable IEnumerator,ToCharArray,StringBuilder

先來看程式範例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace RemoveBlank
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }
        private void btn_RemoveBlank_Click(object sender, EventArgs e)
        {
            //先將再txt_str.Text輸入的中文轉乘字元陣列
            char[] P_chr = txt_str.Text.ToCharArray();//得到字符陣列
            //P_chr.GetEnumerator() 得到列舉器
            IEnumerator P_ienumerator_chr = P_chr.GetEnumerator();
            //建立stringbuilder對像
            StringBuilder P_stringbuilder = new StringBuilder();
            //將列舉值往前推至下集合中的下一個項目。如果成功則返回為 true
            //如果超過集合結尾,則返回false。
            while (P_ienumerator_chr.MoveNext())//開始列舉
            {
                //向stringbuilder對像中Append新增非空格字符
                //並且P_ienumerator_chr.Current使用Current取矩陣中的每一個字元
                //如果不等於" " 空白 =true 貼上目前矩陣自原P_ienumerator_chr.Current.ToString()
                //false 貼上空的字串string.Empty
                P_stringbuilder.Append(
                    (char)P_ienumerator_chr.Current != ' ' ?
                    P_ienumerator_chr.Current.ToString() : string.Empty);
            }
            //印出P_stringbuilder 得到沒有空格的字串
            txt_removeblank.Text = P_stringbuilder.ToString(); 
        }
    }
}
1

雖然目前看來都能一目了覽
但為了怕忘記 還是大改講解一下
首先 我們將會在 txt_str輸入字串+空白
而後txt_removeblank將會輸出去除空白的字串

首先我們利用ToCharArray()將txt_str字串,以陣列方式
存取Char[] 名子叫P_chr
然後再對P_chr.GetEnumerator 取得列舉
將會把列舉回傳給IEnumerator介面

再來實體化一個StringBuilder類別,先放著等等要存取結果用

再來一個while迴圈裡面搭配IEnumerator.MoveNext()
MoveNext()會查看列舉是否可往前推送一個索引 如果是為TRUE
將會運行{}下的程式碼,並以StringBuilder.Append存取字串
在存取字串區塊中,我們使用了三元運算來判斷
本陣列索引使否是一個" "空白鍵,如果不是
將回傳true 三元運算後面將會回傳前者
P_ienumerator_chr.Current.ToString()
傳回本次索引值內的字串

那麼如果是false則傳回後者string.Empty空字串
PS:空字串是什麼都沒有"",空白鍵是" "

最後我們將StringBuilder.Tostring回傳給txt_removeblank.Text
並且印出 就大功告成了!

完畢!


沒有留言:

張貼留言