将卡号转换为 XXXX-XXXX-XXXX-0000 格式
Convert card numbers to XXXX-XXXX-XXXX-0000 Format
我有一个 16 字符的字符串,它是这样的:
1234567891234567
我需要能够格式化字符串,因为它会出现在系统中,即
XXXX-XXXX-XXXX-4567
注意上面显示的4567位数字与卡号的最后四位数字有关。
This 问题有助于将字符串格式化为 1234-5678-9123-4567
但是对上面要求的格式没有帮助。
在寻找答案时,我还遇到了以下解决方案:
string[] subStrings = Enumerable.Range(0, 4).Select(n => cardNumber.Substring(n * 4, 4)).ToArray();
string result = String.Format("{0}-{1}-{2}-{3}", subStrings);
但同样这只会将字符串输出为 1234-5678-9123-4567
我似乎已经解决了部分问题,但无法格式化其余部分。
您可以重新分配数组值。
subStrings[0] = subStrings[1] = subStrings[2] = "XXXX"
如果您的信用卡号字符串始终是 16 位数字,那么您可以这样做:
string str = "1234567891234567";
string output = "XXXX-XXXX-XXXX-" + str.Substring(str.Length - 4);
保留原始代码,您可以这样做:
string[] subStrings = Enumerable.Range(0, 4).Select(n => cardNumber.Substring(n * 4, 4)).ToArray();
string result = String.Format("XXXX-XXXX-XXXX-{0}", subStrings[3]);
您可以从您的字符串创建一个 char[],然后您可以将您的 char[] 分组为 char[4] 块,然后您可以简单地将您的 char[4] 连接到虚线字符串中。你能试试下面的代码吗;
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
string source = "1234567891234567";
int chunkSize = 4;
List<string> chunks = (from i in source.ToCharArray().Select((value, index) => new { Value = value, Index = index })
group i.Value by i.Index / chunkSize into g
select g).Select(x => string.Join("",x)).ToList();
Console.WriteLine(string.Join("-",chunks));
Console.WriteLine("XXXX-XXXX-XXXX-"+chunks.Last());
Console.WriteLine(chunks.First()+"-XXXX-XXXX-"+chunks.Last());
}
}
希望这对您有所帮助。
PS:您可以选择要屏蔽或显示的块的任何第 n 个索引。
我有一个 16 字符的字符串,它是这样的:
1234567891234567
我需要能够格式化字符串,因为它会出现在系统中,即
XXXX-XXXX-XXXX-4567
注意上面显示的4567位数字与卡号的最后四位数字有关。
This 问题有助于将字符串格式化为 1234-5678-9123-4567
但是对上面要求的格式没有帮助。
在寻找答案时,我还遇到了以下解决方案:
string[] subStrings = Enumerable.Range(0, 4).Select(n => cardNumber.Substring(n * 4, 4)).ToArray();
string result = String.Format("{0}-{1}-{2}-{3}", subStrings);
但同样这只会将字符串输出为 1234-5678-9123-4567
我似乎已经解决了部分问题,但无法格式化其余部分。
您可以重新分配数组值。
subStrings[0] = subStrings[1] = subStrings[2] = "XXXX"
如果您的信用卡号字符串始终是 16 位数字,那么您可以这样做:
string str = "1234567891234567";
string output = "XXXX-XXXX-XXXX-" + str.Substring(str.Length - 4);
保留原始代码,您可以这样做:
string[] subStrings = Enumerable.Range(0, 4).Select(n => cardNumber.Substring(n * 4, 4)).ToArray();
string result = String.Format("XXXX-XXXX-XXXX-{0}", subStrings[3]);
您可以从您的字符串创建一个 char[],然后您可以将您的 char[] 分组为 char[4] 块,然后您可以简单地将您的 char[4] 连接到虚线字符串中。你能试试下面的代码吗;
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
string source = "1234567891234567";
int chunkSize = 4;
List<string> chunks = (from i in source.ToCharArray().Select((value, index) => new { Value = value, Index = index })
group i.Value by i.Index / chunkSize into g
select g).Select(x => string.Join("",x)).ToList();
Console.WriteLine(string.Join("-",chunks));
Console.WriteLine("XXXX-XXXX-XXXX-"+chunks.Last());
Console.WriteLine(chunks.First()+"-XXXX-XXXX-"+chunks.Last());
}
}
希望这对您有所帮助。 PS:您可以选择要屏蔽或显示的块的任何第 n 个索引。