如何在c#中仅显示int的一部分(如切断部分信用卡号)

如果我有一个int的信用卡号,我只想在左边显示最后4个带*的数字,我将如何在C#中执行此操作?

例如,4838382023831234将显示为* 1234

 // assumes that ccNumber is actually a string string hidden = "*" + ccNumber.Substring(ccNumber.Length - 4); 

如果是整数类型?

我在哪里

 string maskedNumber = string.Format("*{0}", i % 10000) 

这将得到10,000的模数,它将返回int的最后四位数

 string myCc = myCc.ToString().Substring(12).PadLeft(1, '*'); 

信用卡号码将溢出int32,就像电话号码一样,考虑添加,减去或乘以信用卡号码没有任何意义。 字符串输入也可以处理格式化,因为有些用户会用连字符写。 出于这些原因,将这些对象存储为字符串并为实际打算执行算术运算的数据保留数值类型会好得多。

我不满意。

binaryworrier :请注意,如果你使用modulo,你会获得更少的数字,例如1234123412340001

sshow :请注意,如果您使用substring(12),您将获得更少的数字,例如0000123412341234

解决方案是:

 UInt64 ccNumber; string s = ccNumber.ToString().Text.PadLeft(15, 'myString'); string last = "*"+s.Substring(s.Length-4); 

但从更抽象的角度来看,信用卡号码实际上是一个数字吗? 我想不是; 更有可能的是,你想要逐位操作它而不是对其进行算术运算。 将char [16]转换为UInt64的优势在于将存储空间减少了50%。 没有等待,75% – 愚蠢的双字节字符!

如果数字存储为字符串,那么这样做

  string ccNumber = "4242424242424242"; string modifiedCCNumber = "*" + ccNumber.Substring(ccNumber.Length - 4); 
 string cardNo = "1234567890123456"; string maskedNo = "*" + cardNo.Substring(12,4);