2014年5月9日 星期五

c# 遮罩電話 xxx

這function效能非最佳只不過目前剛好用到
所以隨手寫了一下
如有更好的方式可提供喔謝謝!!
 
   /// 
        /// 遮罩電話 (十個字 手機市話)(九個字 市話)(十個字以上前四後三)(四個字以下回傳空白)
        /// 
        /// 字串    
        /// string
        public static string MaskString(string pStr)
        {
            string mReturn = "";

            if (pStr.Length == 9 && pStr.StartsWith("0")) //9碼的如高雄
            {
                mReturn = pStr.Substring(0,2) + "-XXX-" + pStr.Substring(5,4);
            }
            else if (pStr.Length == 10 && pStr.StartsWith("09"))//手機
            {             

                mReturn = pStr.Substring(0, 4) + "-XXX-" + pStr.Substring(7, 3);

            }
            else if (pStr.Length == 10 && pStr.StartsWith("0"))//台北市話
            {
                mReturn = pStr.Substring(0, 2) + "-XXXX-" + pStr.Substring(6, 4);
            }
            else
            {
                if (pStr.Length > 10)//十個字以上
                {
                    for (int i = 0; i < pStr.Length ; i++)
                    {
                        if ((i == 0 || i <= 3) || (i >= pStr.Length - 3)) //前四個字 後三個字出現
                        {
                            mReturn += pStr.Substring(i,  1);
                        }
                        else
                        {
                            mReturn += "X";
                        
                        }
                    }                   
                }
                else  if(pStr.Length >= 4)//四個字以上才會做
                {
                    for (int i = 0; i < pStr.Length; i++)
                    {
                        if (i >= pStr.Length - 3) //後三個字出現
                        {
                            mReturn += pStr.Substring(i, 1);
                        }
                        else
                        {
                            mReturn += "X";
                        }
                    }
                }            
            }
            return mReturn;
        }