gpt4 book ai didi

c# - 屏蔽除字符串的前 6 位和后 4 位以外的所有数字(长度不同)

转载 作者:IT王子 更新时间:2023-10-29 04:47:48 25 4
gpt4 key购买 nike

我有一个卡号作为字符串,例如:

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 位数字之间有一个空格。

最佳答案

这适用于任何卡号长度:

var cardNumber = "3456123434561234";

var firstDigits = cardNumber.Substring(0, 6);
var lastDigits = cardNumber.Substring(cardNumber.Length - 4, 4);

var requiredMask = new String('X', cardNumber.Length - firstDigits.Length - lastDigits.Length);

var maskedString = string.Concat(firstDigits, requiredMask, lastDigits);
var maskedCardNumberWithSpaces = Regex.Replace(maskedString, ".{4}", "$0 ");

关于c# - 屏蔽除字符串的前 6 位和后 4 位以外的所有数字(长度不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com