我想在WPF中开发一个具有某种掩码的自定义用户控件。此功能非常类似于许多在线应用程序中提供的功能,您可以在其中输入您的信用卡号码,下次每当您登录到您的帐户时,您只会看到最后一张卡号的数字(例如 ** * 4587)但是当我以这种方式显示数据时,我希望保持实际值不变,因此在内部绑定中我将访问完整数据。
答案 0 :(得分:2)
您可以尝试这样的事情:
string originalNumber = textBoxOriginalNumber.Text;
int numberOfDigits = textBoxOriginalNumber.Text.Length;
string hidden = new String('*', numberOfDigits-4);
textBoxModifiedNumber.Text = hidden + originalNumber.Remove(0, numberOfDigits-4);
这不是一个优雅的解决方案,但如果有人给你更好的解决方案,它会帮助你。基本上,它需要原始信用卡号,计算它有多少位数,删除“n-4”的第一个数字,然后显示*符号“n-4”次加上最后四位数。无论原始数字有多少位数,这都可以。
此外,我不确定掩码(或其他用户建议的正则表达式)是否会起作用,因为(如果我理解的话)它将替换整数,而不是显示最后4位数。 / p>
答案 1 :(得分:1)
您可以使用Regex.Replace和\ d来表示数字
即
var digits = new Regex(@"\d");
modifiedNumber = digits.Replace(originalNumber, "*");
或者,如果您想更新除最后一组
之外的整组数字@"\d{4}-"
答案 2 :(得分:1)
好的,这就是我解决这个问题的方法。使用卡号后,我想使用ID和SN号,所以我所做的只是写了一个小方法,它接受字符串并返回屏蔽值,以防万一有人需要这个功能。
public static string GetMaskedNumber(string unsecuredNumber, char maskChar)
{
return unsecuredNumber.Substring(unsecuredNumber.Length - 4)
.PadLeft(unsecuredNumber.Length - 6, ' ')
.PadLeft(unsecuredNumber.Length, maskChar);
}