我們可以使用任何格式來識別UPC代碼,而不是隻檢查數字位數嗎?如何識別一個數字是一個UPC代碼還是簡單數字?有沒有特定的格式來識別UPC代碼?
4
A
回答
9
我有一些Objective-C代碼驗證用戶輸入的字符串,以查看它是否是有效的UPC或EAN條形碼。這支持UPC,ISBN和EAN(8,13和14)。
如果您有一個數字,請首先將其轉換爲字符串以使用此方法。此方法假定條碼字符串只有數字0-9或X(某些ISBN條形碼可以有X)。
- (BOOL)validBarcode:(NSString *)code {
int len = [code length];
switch (len) {
case 8: // EAN-8
{
int check = [code intForDigitAt:7];
int val = (10 -
(([code intForDigitAt:1] + [code intForDigitAt:3] + [code intForDigitAt:5] +
([code intForDigitAt:0] + [code intForDigitAt:2] + [code intForDigitAt:4] + [code intForDigitAt:6]) *
3) % 10)) % 10;
return check == val;
}
case 10: // ISBN
{
int check = [code intForDigitAt:9];
int sum = 0;
for (int i = 0; i < 9; i++) {
sum += [code intForDigitAt:i] * (i + 1);
}
int val = sum % 11;
if (val == 10) {
return [code characterAtIndex:9] == 'X' || [code characterAtIndex:9] == 'x';
} else {
return check == val;
}
}
case 12: // UPC
{
int check = [code intForDigitAt:11];
int val = (10 -
(([code intForDigitAt:1] + [code intForDigitAt:3] + [code intForDigitAt:5] + [code intForDigitAt:7] + [code intForDigitAt:9] +
([code intForDigitAt:0] + [code intForDigitAt:2] + [code intForDigitAt:4] + [code intForDigitAt:6] + [code intForDigitAt:8] + [code intForDigitAt:10]) *
3) % 10)) % 10;
return check == val;
}
case 13: // EAN-13
{
int check = [code intForDigitAt:12];
int val = (10 -
(([code intForDigitAt:0] + [code intForDigitAt:2] + [code intForDigitAt:4] + [code intForDigitAt:6] + [code intForDigitAt:8] + [code intForDigitAt:10] +
([code intForDigitAt:1] + [code intForDigitAt:3] + [code intForDigitAt:5] + [code intForDigitAt:7] + [code intForDigitAt:9] + [code intForDigitAt:11]) *
3) % 10)) % 10;
return check == val;
}
case 14: // EAN-14
{
int check = [code intForDigitAt:13];
int val = (10 -
(([code intForDigitAt:1] + [code intForDigitAt:3] + [code intForDigitAt:5] + [code intForDigitAt:7] + [code intForDigitAt:9] + [code intForDigitAt:11] +
([code intForDigitAt:0] + [code intForDigitAt:2] + [code intForDigitAt:4] + [code intForDigitAt:6] + [code intForDigitAt:8] + [code intForDigitAt:10] + [code intForDigitAt:12]) *
3) % 10)) % 10;
return check == val;
}
default:
return NO;
}
}
這使得使用一個類中的方法我加入NSString
的:
- (int)intForDigitAt:(NSUInteger)index {
unichar ch = [self characterAtIndex:index];
if (ch >= '0' && ch <= '9') {
return ch - '0';
} else
return 0;
}
+0
Thanks.It工作正常:) –
1
有沒有Objective-C的格式或這樣的方式,你必須自己實現,將功能:
一)檢查的位數 b)檢查校驗位
相關問題
- 1. 識別代碼標籤之間的代碼是JavaScript還是HTML
- 2. UPC代碼問題
- 3. iPhone的識別碼是否有唯一的代碼?
- 4. 是否有一個ASIN到UPC的API?
- 5. 如何識別vb.net代碼,aspx代碼
- 6. 簡單的方法來識別/識別一個手勢
- 7. 識別VBA代碼
- 8. QR代碼識別
- 9. 查找貨運ID,UPC代碼,數量
- 10. 如何在字符串中識別一個字母旁邊有一個數字?
- 11. 文字識別庫,Android的代碼,Java?
- 12. 如何驗證UPC或EAN代碼?
- 13. Antlr沒有識別號碼
- 14. 如何識別一個/這個字體?
- 15. 從PHP/JS中的圖像中識別EAN/UPC條形碼號碼?
- 16. 如何識別一個字符串是否是一個數字,如果是,將其轉換爲一個int? (C++)
- 17. JVM的代碼識別
- 18. 可以識別這個還是我需要一個數組?
- 19. 在簡單的數字識別
- 20. 簡單的數字圖像識別庫
- 21. 如何識別一個字節字符串是否是一個pickle對象?
- 22. 從UPC代碼中查找產品類別
- 23. 如何識別字符串是否有多個字符
- 24. 如何識別哪個記錄具有特定字段的MAX?
- 25. 如何使用VBA識別單元格是否具有特定的數值
- 26. Tesserocr沒有識別文字
- 27. C代碼和bug識別
- 28. 識別C++代碼問題
- 29. 自動代碼識別
- 30. meta_where代碼未被識別
的UPC [包括的校驗碼(http://en.wikipedia.org/wiki/Universal_Product_Code#Check_digits),所以您可以確定給定的12位數字是否是有效的UPC。根據您的應用程序,您可能可以使用Wikipedia頁面上的其他信息來決定給定的數字是否是您感興趣的UPC。 – bdesham
這實際上不是iOS或Objective-C特定問題但在StackOverflow中沒有「upc」標記,因此我無法編輯您的問題。 [在這個問題中有一些C#代碼,看起來很容易移植到你正在嘗試做的事情](http://stackoverflow.com/questions/10143547/how-do-i-validate-a-upc-or-ean -碼)。 –