Ausgehend von Ihrem ersten Beispiel und der anschließenden Bearbeitung, in der Sie gezeigt haben, wie Sie das Problem lösen, klingt die Losnummer immer an der gleichen Stelle. Es wäre sauberer (und mehr im Einklang mit dem Standard-C# -Code), einen einzigen Aufruf an string.Substring(int,int) statt der zwei Zeilen, die Sie verwenden, zu verwenden, die auch das Ziehen der VB-Bibliothek erfordern. Sie müssen nur Substring
anrufen und geben Sie den Startindex und die Länge.
Also dieser Code:
string lotNum = barcode.Substring(barcode.Length - 6, 5);
bearbeiten
Nur eine weitere Klärung, warum es um den Anruf zu verwenden, könnte besser sein:
string lotNum = Strings.Right(barcode, 6);
lotNum = lotNum.Remove((lotNum.Length - 1), 1);
kann mit diesem einzelnen Teilzeichen Anruf erfolgen Substring
. In C# string
Objekte sind unveränderlich. Das heißt, wenn Sie den Aufruf an Strings.Right
vornehmen, erhalten Sie ein neues Zeichenfolgenobjekt zurück. Wenn Sie dann lotNum.Remove
aufrufen, "entfernen" Sie kein Zeichen aus der vorhandenen Zeichenfolge, wird eine neue Zeichenfolge mit den entfernten Zeichen zugeordnet und Ihnen zurückgegeben. Mit Ihrem Code gibt es also zwei neue String-Zuweisungen, wenn Sie versuchen, die Lot-Nummer zu extrahieren. Wenn Sie den Aufruf an Substring
tätigen, erhalten Sie eine neue Zeichenfolge zurück, aber anstatt eine neue Zeichenfolge zu erhalten, die Sie sofort ändern und eine zweite neue Zeichenfolge abrufen, müssen Sie nur eine neue Zeichenfolge zuweisen, um die Losnummer zu extrahieren. In dem Beispiel, das Sie angegeben haben, würde es wahrscheinlich kein merkliches Performance-/Speicherproblem geben, aber es könnte etwas zu Problemen führen, wenn dieser Code in einer engen Schleife oder ähnlichem wäre.
Es sieht (von Ihrem Formatkommentar) so aus, dass der String immer eine konsistente Länge bis zum 'A' hat, also warum nicht einfach einen Teilstring von diesem Punkt nehmen? – pstrjds
Wenn die Chargennummer immer mit einem A beginnt, können Sie vielleicht danach suchen und die Werte danach nehmen? – Twtheo
Wenden Sie sich an die für den Versand des Barcodes verantwortliche Person und fragen Sie, wie Sie die Chargennummer extrahieren können. –