【发布时间】:2015-09-09 02:10:07
【问题描述】:
我有一个卡号作为字符串,例如:
string ClsCommon.str_CardNumbe r = "3456123434561234";
此卡号的长度可以从 16 位到 19 位不等,具体取决于要求。
我的要求是我必须显示卡号的前六位数字和后四位数字,并用字符“X”掩盖中间的其他字符。
我尝试过使用 subString 并分别为 16、17、18、19 位实现它..
我将字符串(ClsCommon.str_CardNumber)拆分为 5 个字符串(str_cardNum1、str_cardNum2、str_cardNum3、str_cardNum4、str_cardNum5 - 每个字符串有 4 位数字......剩余的数字用于第 5 个字符串)
所有字符串都放在 ClsCommon 文件中。 基于此,我实现了以下内容,效果很好:
if (ClsCommon.str_CardNumber.Length == 16) {
txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, " ", ClsCommon.str_cardNum2.Substring(0, 2), "XX", " ", "XXXX", " ", ClsCommon.str_cardNum4);
}
if (ClsCommon.str_CardNumber.Length == 17) {
txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, " ", ClsCommon.str_cardNum2.Substring(0, 2), "XX", " ", "XXXX", " ", "X", ClsCommon.str_cardNum4.Substring(1, 3), " ", ClsCommon.str_cardNum5);
}
if (ClsCommon.str_CardNumber.Length == 18) {
txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, " ", ClsCommon.str_cardNum2.Substring(0, 2), "XX", " ", "XXXX", " ", "XX", ClsCommon.str_cardNum4.Substring(2, 2), " ", ClsCommon.str_cardNum5);
}
if (ClsCommon.str_CardNumber.Length == 19) {
txtmskcrdnum.Text = string.Concat(ClsCommon.str_cardNum1, " ", ClsCommon.str_cardNum2.Substring(0, 2), "XX", " ", "XXXX", " ", "XXX", ClsCommon.str_cardNum4.Substring(3, 1), " ", ClsCommon.str_cardNum5);
}
txtmskcrdnum.Text = ClsCommon.str_CardNumber.PadLeft(ClsCommon.str_CardNumber.Length, 'X').Substring(ClsCommon.str_CardNumber.Length - 4);
对于多个长度,上述方法没有用。
我想要一种显示前 6 位和后 4 位数字并用 X 掩盖其他数字的单一方法。 最后的字符串应该在每 4 位之间有一个空格。
【问题讨论】:
标签: c# .net string substring masking