我正在開發一個應用程式,它獲取從 QR 碼掃描發送的文本資料并從CDC 人行橫道表中執行查找。這是一個示例:
0110358160825436172302061095EJ7
上面發布的字串資料包含 NDC 編號、疫苗批號和到期日期。但是,我不知道如何決議這些欄位。
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
這是完成這項作業的 PowerShell 代碼。下面是在 C# 代碼中應該作業的內容。
$QRScan = '0110358160825436172302061095EJ7';
$GS1AppID1 = $QRScan.Substring(0,2);
$GTIN = $QRScan.Substring(2,14);
$GS1AppID2 = $QRScan.Substring(16,2);
$YYMMDD = $QRScan.Substring(18,6);
$GS1AppID3 = $QRScan.Substring(24,2);
$LotNumber = $QRScan.Substring(26);
Write-Host "GS1AppID1: $GS1AppID1"
Write-Host "GTIN: $GTIN"
Write-Host "GS1AppID2: $GS1AppID2"
Write-Host "YYMMDD: $YYMMDD"
Write-Host "GS1AppID3: $GS1AppID3"
Write-Host "LotNumber: $LotNumber"
這是輸出:
GS1AppID1: 01
GTIN: 10358160825436
GS1AppID2: 17
YYMMDD: 230206
GS1AppID3: 10
LotNumber: 95EJ7
我沒有在 C# 中測驗過,但它應該非常接近您的需要。
string QRScan = "0110358160825436172302061095EJ7";
string GS1AppID1 = QRScan.Substring(0,2);
string GTIN = QRScan.Substring(2,14);
string GS1AppID2 = QRScan.Substring(16,2);
string YYMMDD = QRScan.Substring(18,6);
string GS1AppID3 = QRScan.Substring(24,2);
string LotNumber = QRScan.Substring(26);
注意: 子字串可能會拋出錯誤,因此在代碼中使用它時請記住這一點。
正則運算式版本
雖然 Substring 完成了這項作業,但問題被標記為正則運算式。
正則運算式 C# 控制臺版本(第一次在 C# 中執行正則運算式命名組 - 有沒有更簡單的方法?):
static void Main() {
string RE = @"^(?<GS1AppID1>\d{2})(?<GTIN>\d{14})(?<GS1AppID2>\d{2})(?<YYMMDD>\d{6})(?<GS1AppID3>\d{2})(?<LotNumber>\w )$";
var Parser = new Regex(RE);
string QRScan = "0110358160825436172302061095EJ7";
Match Matches = Parser.Match(QRScan);
if(Matches.Success) {
Console.WriteLine("GS1AppID1: {0}", Matches.Groups["GS1AppID1"].Value);
Console.WriteLine("GTIN: {0}", Matches.Groups["GTIN"].Value);
Console.WriteLine("GS1AppID2: {0}", Matches.Groups["GS1AppID2"].Value);
Console.WriteLine("YYMMDD: {0}", Matches.Groups["YYMMDD"].Value);
Console.WriteLine("GS1AppID3: {0}", Matches.Groups["GS1AppID3"].Value);
Console.WriteLine("LotNumber: {0}", Matches.Groups["LotNumber"].Value);
}
}
正則運算式 PowerShell(僅供比較。):
$RE = '^(?<GS1AppID1>\d{2})(?<GTIN>\d{14})(?<GS1AppID2>\d{2})(?<YYMMDD>\d{6})(?<GS1AppID3>\d{2})(?<LotNumber>\w )$';
$QRScan = '0110358160825436172302061095EJ7';
if($QRScan -match $RE) {
Write-Host "GS1AppID1: $($Matches.GS1AppID1)"
Write-Host "GTIN: $($Matches.GTIN)"
Write-Host "GS1AppID2: $($Matches.GS1AppID2)"
Write-Host "YYMMDD: $($Matches.YYMMDD)"
Write-Host "GS1AppID3: $($Matches.GS1AppID3)"
Write-Host "LotNumber: $($Matches.LotNumber)"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468603.html
上一篇:如何使用正則運算式匹配子字串?
