Wie kann ich den Wert 123456789012345
oder 1234567890123456
annehmen und ihn in:
************2345
und ************3456
Der Unterschied zwischen den obigen Strings besteht darin, dass einer 15 Ziffern enthält und der andere 16.
Ich habe Folgendes versucht, aber es behält nicht die letzten 4 Ziffern der 15-stelligen Nummer und jetzt ist egal, wie die Länge der Zeichenfolge, sei es 13, 14, 15 oder 16, ich möchte alle Anfang maskieren Ziffern mit einem *, aber behalten die letzten 4. Hier ist, was ich versucht habe:
%Vor%In etwa so:
%Vor%Damit werden alle bis auf die letzten vier Zeichen der Zeichenfolge maskiert. Es nimmt an, dass die Quellzeichenfolge mindestens 4 Zeichen lang ist.
Einfachster Weg: Erstellen Sie eine Erweiterungsmethode, um die letzten vier Ziffern zu extrahieren. Verwenden Sie das in Ihrem String.Format-Aufruf.
Zum Beispiel:
%Vor%In Ihrem Code:
%Vor%Meiner Meinung nach führt dies zu besser lesbarem Code und ist wiederverwendbar.
BEARBEITEN: Vielleicht nicht der einfachste Weg, sondern ein alternativer Weg, der zu mehr wartbaren Ergebnissen führt. & lt; Achselzucken / & gt;
Einfachster Weg: Erstellen Sie eine Erweiterungsmethode, um die letzten vier Ziffern zu extrahieren. Verwenden Sie das in Ihrem String.Format-Aufruf.
Zum Beispiel:
%Vor%In Ihrem Code:
%Vor%Meiner Meinung nach führt dies zu besser lesbarem Code und ist wiederverwendbar.
BEARBEITEN: Vielleicht nicht der einfachste Weg, sondern ein alternativer Weg, der zu mehr wartbaren Ergebnissen führt. & lt; Achselzucken / & gt;
LINQ:
%Vor%Wie kann ich den Wert %code% oder %code% annehmen und ihn in:
umwandeln?%code% und %code%
Der Unterschied zwischen den obigen Strings besteht darin, dass einer 15 Ziffern enthält und der andere 16.
Ich habe Folgendes versucht, aber es behält nicht die letzten 4 Ziffern der 15-stelligen Nummer und jetzt ist egal, wie die Länge der Zeichenfolge, sei es 13, 14, 15 oder 16, ich möchte alle Anfang maskieren Ziffern mit einem *, aber behalten die letzten 4. Hier ist, was ich versucht habe:
%Vor%In etwa so:
%Vor%Damit werden alle bis auf die letzten vier Zeichen der Zeichenfolge maskiert. Es nimmt an, dass die Quellzeichenfolge mindestens 4 Zeichen lang ist.
Versuchen Sie Folgendes:
%Vor%Regex mit einem Match-Evaluator wird die Aufgabe
erledigen %Vor%Dies entspricht einer beliebigen Anzahl von Ziffern gefolgt von vier Ziffern und dem Ende (es enthält nicht die vier Ziffern in der Ersetzung). Die Funktion replace ersetzt die Übereinstimmung durch eine Zeichenfolge gleicher Länge.
Dies hat den zusätzlichen Vorteil, dass Sie es auch als Validierungsalgorithmus verwenden können. Ändern Sie das erste + in {11,12}, damit es insgesamt 15 oder 16 Zeichen entspricht, und dann können Sie %code% verwenden, um die Gültigkeit zu bestimmen.
BEARBEITEN
Alternativ, wenn Sie immer ein 16-Zeichen-Ergebnis haben möchten, verwenden Sie einfach
%Vor%Ein einfacher Weg
%Vor%Versuchen Sie Folgendes:
%Vor%Probieren Sie es aus:
%Vor%Passen Sie den Funktionskopf wie gewünscht an, rufen Sie mit:
auf %Vor%Regex mit einem Match-Evaluator wird die Aufgabe
erledigen %Vor%Dies entspricht einer beliebigen Anzahl von Ziffern gefolgt von vier Ziffern und dem Ende (es enthält nicht die vier Ziffern in der Ersetzung). Die Funktion replace ersetzt die Übereinstimmung durch eine Zeichenfolge gleicher Länge.
Dies hat den zusätzlichen Vorteil, dass Sie es auch als Validierungsalgorithmus verwenden können. Ändern Sie das erste + in {11,12}, damit es insgesamt 15 oder 16 Zeichen entspricht, und dann können Sie x.IsMatch
verwenden, um die Gültigkeit zu bestimmen.
BEARBEITEN
Alternativ, wenn Sie immer ein 16-Zeichen-Ergebnis haben möchten, verwenden Sie einfach
%Vor%