Maske alle Ziffern außer der 6 ersten und 4 letzten Ziffern der Zeichenfolge( Länge variiert )

Habe ich eine Karte mit der Zahl als Zeichenkette, zum Beispiel:

string  ClsCommon.str_CardNumbe r = "3456123434561234";

Die Länge dieser Karte, die Anzahl kann variieren von 16 bis 19 stellen, je nach Anforderung.

Meine Forderung ist, die ich habe, zeigen die ersten sechs Ziffern und die letzten 4 Ziffern der Kartennummer und Maske, die andere Charaktere in zwischen mit dem Zeichen 'X'.

Habe ich versucht mit subString und umgesetzt werden separat für 16,17,18,19 Ziffern..

Ich split string(ClsCommon.str_CardNumber) für 5 Streicher (str_cardNum1, str_cardNum2, str_cardNum3, str_cardNum4, str_cardNum5 - 4 Ziffern für jede saite..restlichen Ziffern für die 5. saite)

Alle Saiten befinden sich in ClsCommon-Datei.
Basierend auf, dass ich umgesetzt habe die unten, die perfekt funktioniert:

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);

Für mehrere Längen, die oben erwähnten Ansatz ist nicht sinnvoll.

Möchte ich einen einzelnen Ansatz, der zeigt die ersten 6 und letzten 4 Ziffern und Masken, die übrigen Ziffern mit X.
Die endgültige Zeichenfolge sollte ein Leerzeichen zwischen jeden 4 stellen.

InformationsquelleAutor der Frage Kartiikeya Baleneni | 2015-06-23

Schreibe einen Kommentar