在今天,各大媒體都時興通過短信參與活動並中獎的行為,中獎號碼大多用‘*’好掩蓋其手機號碼的中間幾位如:138*****345,今天,我們做的就是用一個類庫來實現這個通用功能,以便在網站和程序中引用。
正文:下面,我們就開始吧,首先,用vs2005建立一個c#類庫,我們命名為NumMask,把他的Class1改名為容易記憶的其他名字,我改稱Masker,然後我們添加如下代碼:
NumMask
using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace NumMask { public class Masker { ArrayList numbers = new ArrayList();//定義一個ArrayList變量,用於收集從主程序傳遞來的號碼 ArrayList newnum = new ArrayList();//這是一個返回處理結果的Arraylist public ArrayList NumberChange(ArrayList number) { foreach (string num in number) { numbers.Add(num);//把接收到的號碼放入numbers中 } foreach (string n in numbers)//進行處理 { char[] temp = n.ToCharArray(); for (int i = 3; i <= 7; i++)//把號碼的3到7位用*號代替,這裡應該有更好的方法,我的比較笨,希望大家可以給我建議 { temp[i] = '*'; } string s = new string(temp); newnum.Add(s);//把Mask後的號碼放入結果數組等待返回 } return newnum; } } }
然後生成它,得到NumMask.dll文件
再建立一個winform項目,添加剛才的NumMask.dll為引用。winform界面如下:
我們沒有使用數據庫作為號碼來源,而是使用了簡單的定義好的號碼,在實際中可以把數據庫中的號碼字段讀取到一個ArrayList中,然後調用NumMask來處理。
ListBox1用於顯示處理結果,我們看看“開始轉換”按鈕的代碼:記得在開頭添加using NumMask;
button1
private void button1_Click(object sender, EventArgs e) { ArrayList al = new ArrayList();//定義al為原始的號碼數組 ArrayList ab = new ArrayList();//定義ab為處理後的結果 al.Add("13888567890");//向原始號碼中添加號碼 al.Add("15878990987"); NumMask.Masker mk = new Masker();//實例化一個Masker ab=mk.NumberChange(al);//向其中傳入原始數據al,用ab接收結果 foreach (string nums in ab) { listBox1.Items.Add(nums);//輸出結果 } }
編譯運行以下,可以看到如下圖的效果:
小結:這個類庫還有很多地方值得改造,比如判斷數據的有效性等等,請大家多多給出意見和建議,幫助我更好的學習和進步。