我有以下包含产品条形码的字符串:
4016241030924;4016241030924;8710624237479;5900951254741;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710624296933;8710624296872;8710624223885;8710624223885;8711000341001;8711000341001;8711000341001;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260453;我想做的是:
;拆分字符串key是条形码,value是条形码的计数key (=条形码)和value (= count)以下是我所尝试的:
BarcodesAssArray := Array()
BarcodeArray := StrSplit(fileContent, ";")
Loop % BarcodeArray.MaxIndex() - 1 {
thisBarcode := BarcodeArray[a_index]
; Check if barcode already exists
if (BarcodesAssArray[thisBarcode]) {
BarcodesAssArray[thisBarcode] := BarcodesAssArray[thisBarcode] + 1
} else {
BarcodesAssArray[thisBarcode] := 1
}
}
For key, value in BarcodesAssArray
MsgBox, %key% = %value%但关键不是条形码,而是对条形码的某种引用。我得到的是:
-333809963 = 1
204486651 = 8
430547597 = 2
430561191 = 1
430584127 = 9
43084165 = 1
...我希望得到的是:
4016241030924 = 2
8710624237479 = 1
8710398162939 = 8
...我该怎么做才好呢?
发布于 2020-02-06 06:51:49
“您的问题可能是因为数组中的键被视为数字键。数字键的大小有限制,这取决于您使用的是32位AutoHotkey还是64位。我解决这个问题的方法是在数组中的键中添加一个常量的alpha值,并在显示等键时去掉它。这也处理了这样的情况:否则前导零就会从数字键中被删除。”
TAC109 - https://www.autohotkey.com/boards/viewtopic.php?p=312566#p312566
BarcodesString := "4016241030924;4016241030924;8710624237479;5900951254741;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710398162939;8710624296933;8710624296872;8710624223885;8710624223885;8711000341001;8711000341001;8711000341001;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260415;8710624260453;"
BarcodesString := RTrim(BarcodesString,";") ; remove trailing ;
BarcodesAssArray := {}
Loop, Parse, BarcodesString, `;
switch BarcodesAssArray.HasKey(A_LoopField . "")
{
case true:BarcodesAssArray[A_LoopField . ""] += 1
case false:BarcodesAssArray[A_LoopField . ""] := 1
}
For key, value in BarcodesAssArray
MsgBox, %key% = %value%Xtra - https://www.autohotkey.com/boards/viewtopic.php?p=312565#p312565
发布于 2020-02-05 20:11:31
试着简化代码,并一步一步地进行。
4016241030924;4016241030924;8710624237479;5900951254741;8710398162939 BarcodesAssArray := BarcodeArray := StrSplit(BarcodesAssArray,";")
MsgBox BarcodeArray(1) BarcodeArray(2) BarcodeArray(3) BarcodeArray(4) BarcodeArray(5)
这至少可以让您通过StrSplit语句,知道您有一个有效的数组。
我已经有一段时间没有编码了,所以冒着您自己的风险吧:)
https://stackoverflow.com/questions/60052856
复制相似问题