如果忘記的話可以看看之前所寫的筆記
關於 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
並且印出 就大功告成了!
完畢!
沒有留言:
張貼留言