using System.Text.RegularExpressions;
public static void Main()
var x = HideNumber(16, "64537", "132");
public static string HideNumber(int cardPanLength, string firstDigits = null, string lastDigits = null)
var cardPanHidden = new string('*', cardPanLength);
if (cardPanLength >= firstDigits.Length + lastDigits.Length)
if (!string.IsNullOrEmpty(lastDigits) && !string.IsNullOrEmpty(firstDigits))
cardPanHidden = cardPanHidden.Substring(0, cardPanHidden.Length - (firstDigits.Length + lastDigits.Length));
var cardPan = String.Format("{0}{1}{2}", firstDigits.PadLeft(firstDigits.Length), cardPanHidden, lastDigits.PadRight(lastDigits.Length));
return Regex.Replace(cardPan.ToString(), ".{4}", "$0 ");
if (!string.IsNullOrEmpty(lastDigits))
cardPanHidden = cardPanHidden.Substring(0, cardPanHidden.Length - lastDigits.Length);
var cardPan = String.Format("{0}{1}", cardPanHidden, lastDigits.PadRight(lastDigits.Length));
return Regex.Replace(cardPan.ToString(), ".{4}", "$0 ");
if (!string.IsNullOrEmpty(firstDigits))
cardPanHidden = cardPanHidden.Substring(0, cardPanHidden.Length - firstDigits.Length);
var cardPan = String.Format("{0}{1}", firstDigits.PadRight(firstDigits.Length), cardPanHidden);
return Regex.Replace(cardPan.ToString(), ".{4}", "$0 ");