字符串尾号数字自增长
最近在做一个条码打印的程序,要求箱号个数根据打印的数量自增长;箱号个格式为字符串尾号为数字。
分析:
- 首先根据箱号格式,将非数字字符部分和数字字符部分分隔;
- 其次将数字字符部分转换为数字型,进行运算;转换前记录数字字符长度;
- 再次自增后的数字长度与原来分隔数字型字符进行比较,自增后数字长度不够时,首个开始用0填充;
- 最后将原有的非数字字符部分和自增后组成的数字字符部分进行拼接得到结果。
缺陷:
- 对数字字符长度部分有所限制,字符串转成数字型较容易出错;
具体实现代码如下:
1 private void btnCalc_Click(object sender, EventArgs e) 2 { 3 string input = txtStr.Text.Trim(); 4 int addxs = Convert.ToInt32(txtXS.Text.Trim()); 5 6 //数字的字符索引 7 int strartNo = 0; 8 //固定字符部分 9 string gdzf = string.Empty; 10 //可变列字符部分 11 string kbsz = string.Empty; 12 13 for (int i = 0; i < input.Length; i++) 14 { 15 //判断是否为数字类型 16 if (58 > input[i] && input[i] > 47) 17 { 18 strartNo = i; 19 break; 20 } 21 } 22 23 //固定列赋值 24 gdzf = input.Substring(0, strartNo); 25 //可变列赋值 26 kbsz = input.Substring(strartNo, input.Length - strartNo); 27 28 //可变列长度 29 int kbcd = kbsz.Length; 30 31 int chsz = 0; 32 try 33 { 34 chsz = Convert.ToInt32(kbsz); 35 } 36 catch (Exception) 37 { 38 txtResult.Text = "格式错误"; 39 } 40 41 chsz = chsz + addxs; 42 43 //比较原有数字字符长度与自增后的字符长度 44 if (chsz.ToString().Length < kbcd) 45 { 46 //补零个数 47 int blgs = kbcd - chsz.ToString().Length; 48 string zero = string.Empty; 49 for (int i = 0; i < blgs; i++) 50 { 51 zero = zero + "0"; 52 } 53 54 kbsz = zero + chsz; 55 } 56 else 57 { 58 kbsz = chsz.ToString(); 59 } 60 61 txtResult.Text = gdzf + kbsz; 62 }
测试结果如下:
总结:
- 上述是个人写的算法,由于存在部分限制,如有更好的算法,望大神指点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述