2013年10月20日 星期日

Substring取字串指定字元,LastIndexOf取字元索引

本章重點於 Substring與LastIndexOf


        private void button1_Click(object sender, EventArgs e)
        {
            string teST = "ABCDEFG";//範例
            //這裡不用string 改用一下StringBuilder
            StringBuilder tr = new StringBuilder();
            //使用Substring SHOW出起始0開始取2個字元 等於"AB"
            tr.Append(teST.Substring(0, 2));           
            MessageBox.Show(tr.ToString());//show出
            tr.Clear();// 清空字串
            //查詢字串中,最後一個D索引數是多少 0為起始 所以是3
            //最後一個索引,意思是假如"ABCDA" 他會找到最右邊的A
            //所以是4
            tr.Append(teST.LastIndexOf("D"));
            MessageBox.Show(tr.ToString());//SHOW
        }


PS:如果LastIndexOf找不到對應字元會 回傳-1


再來看檔案範例
如何顯示檔案路徑中的檔案名稱與副檔名呢
來看範例 使用到了penFileDialog1控制項

private void btn_Openfile_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)//判斷是否選擇了檔案
            {
                string P_str_all = openFileDialog1.FileName;//記錄選擇的檔案全路徑
                //取得檔案路徑
                //為何要+1  因為Substring將印出索引0~"\\"的字串
                //而Substring(,)第二個參數是取出字元數 IndexOf索引是0開始
                //所以P_str_all.LastIndexOf("\\") + 1才不會漏掉一個
                string P_str_path = P_str_all.Substring(0, P_str_all.LastIndexOf("\\") + 1);
                //取得檔案名
                //假如是C:\Users\Jian\XXX.TXT好了
                //Substring第一個參數是最後的"\\"+1 索引第14 在後面就是檔名了
                //Substring第二個參數則是副檔名前面的.(17)減(14)=3
                //所以是Substring(14,3) 剛好等於XXX的部分
                string P_str_filename = P_str_all.Substring(P_str_all.LastIndexOf("\\") + 1,
                    P_str_all.LastIndexOf(".") -(P_str_all.LastIndexOf("\\") + 1));
                string P_str_fileexc = //取得檔案副檔名 方法同上
                    P_str_all.Substring(P_str_all.LastIndexOf(".") + 1,
                    P_str_all.Length - P_str_all.LastIndexOf(".") - 1);
                lb_filepath.Text = "檔案路徑: " + P_str_path;//顯示檔案路徑
                lb_filename.Text = "檔案名稱: " + P_str_filename;//顯示檔案名
                lb_fileexc.Text = "檔案副檔名: " + P_str_fileexc;//顯示副檔名
            }
        }

完畢!!

沒有留言:

張貼留言