C# .NET 3.5中如何将条码数字字符串拆分为int数组
嘿,这个需求不难实现,我给你几个在.NET 3.5里完全能用的方案,看你偏好哪种:
方案1:用LINQ快速搞定(简洁高效)
.NET 3.5已经支持LINQ了,一行代码就能搞定。利用字符的ASCII码特性,数字字符'0'到'9'的ASCII值是连续的,所以用字符减去'0'就能直接得到对应的整数,比int.Parse更高效:
// 假设扫描得到的条码字符串是barcode string barcode = "1234567890"; int[] digits = barcode.Select(c => c - '0').ToArray();
方案2:传统循环实现(适合新手理解或需要精细控制)
如果你觉得LINQ有点抽象,用普通的for循环或者foreach循环也很容易实现:
string barcode = "1234567890"; int[] digits = new int[barcode.Length]; for (int i = 0; i < barcode.Length; i++) { // 因为你说扫描后是纯数字,直接转就行 digits[i] = barcode[i] - '0'; // 也可以用int.Parse,不过效率稍低:digits[i] = int.Parse(barcode[i].ToString()); }
额外补充:处理可能的非数字字符(可选)
虽然你提到扫描结果是纯数字,但如果担心偶尔有异常字符混入,可以加个过滤逻辑:
LINQ版本加过滤:
int[] digits = barcode.Where(char.IsDigit) .Select(c => c - '0') .ToArray();
循环版本加过滤:
List<int> digitList = new List<int>(); foreach (char c in barcode) { if (char.IsDigit(c)) { digitList.Add(c - '0'); } } int[] digits = digitList.ToArray();
这些方法都能完美满足你的需求,选个顺手的用就行!
内容的提问来源于stack exchange,提问作者ImFastAFBOIII
相关产品推荐
相关产品推荐

