我如何解析从QR扫描仪发送的数据



我正在开发一个应用程序,该应用程序接收从QR码扫描发送的文本数据,并从CDC人行横道表执行查找。下面是一个示例:

0110358160825436172302061095EJ7

上面发布的字符串数据包含NDC号、疫苗批号和有效期。但是,我不知道如何解析这些字段。

我该怎么做?

完成这项工作的是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可能会抛出错误,所以在代码中使用它时请记住这一点。

正则表达式版本当Substring完成工作时,问题被标记为regex。

Regex c#控制台版本(第一次在c#中做Regex命名组-有更简单的方法吗?):

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

Regex 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)"
}

最新更新