字符串尾号数字自增长

最近在做一个条码打印的程序,要求箱号个数根据打印的数量自增长;箱号个格式为字符串尾号为数字。

分析:

  1. 首先根据箱号格式,将非数字字符部分和数字字符部分分隔;
  2. 其次将数字字符部分转换为数字型,进行运算;转换前记录数字字符长度;
  3. 再次自增后的数字长度与原来分隔数字型字符进行比较,自增后数字长度不够时,首个开始用0填充;
  4. 最后将原有的非数字字符部分和自增后组成的数字字符部分进行拼接得到结果。

缺陷:

  1. 对数字字符长度部分有所限制,字符串转成数字型较容易出错;

具体实现代码如下:

 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         }

测试结果如下:
     

总结:

  • 上述是个人写的算法,由于存在部分限制,如有更好的算法,望大神指点。
时间: 2024-11-05 04:49:22

字符串尾号数字自增长的相关文章

Oracle字符串中包含数字、特殊符号的排序

问题描述: 某小区,需要按照小区.楼栋.单元号.房间号进行排序,但是按照地址描述排序时,因为字符串中包含数字,所以造成了如下的结果, 1号楼之后应该是2号楼,但是查询结果却是10号楼 . 尝试解决 使用正则表达式替换 结果: 虽然楼栋号排序正常了,但是会发现房间号排序出现了混乱.  继续想办法 终极办法: 使用translate函数 可以发现,结果正常显示 . 以下附上translate使用方法 一.语法: TRANSLATE(string,from_str,to_str) 二.目的 返回将(所

将字符串转化为数字的函数怎么写?

一.测试篇 首先说要有哪些功能测试?(据说先写测试用例后写代码,比较高级) 1.带符号的数字且长度较短的字符串  +12,-13等 2.不带符号的数字且长度较短的字符串 2334等 3.字母和数字组合:a23 ,34fg56等 4.其他非数字非字符字符和数字或者字母的组合:==2.++1.&…(23.342——等 其他的测试用例,还未想到 暂不考虑的问题: 转化得到的整型数,超过整型数表示范围 二.函数说明 输入:+和-.数字型字符(正数.0.负数).其他 输出:对应字符串的整数 三.鲁棒性考虑

php 正则验证字符串是否为数字

PHP 正则验证字符串是否为数字 方法一: php中利用正则表达式验证字符串是否为数字一件非常容易的事情,最主要的是如何写好正则表达式以及掌握正则表达式的写法,在此利用正则表达式的方式来列举一下判断数字的方法. <? if($str) { if(eregi("^[0-9]+$",$str)) { $str=(int)$str; } else { echo "获取到的数据不是有效的数字类型,操作将停止!"; exit(); } } else { echo &qu

微软白板Excel xls列号数字转字母

Excel xls列号数字转字母 https://blog.csdn.net/lf124/article/details/53432817?utm_source=itdadao&utm_medium=referral 最近遇到导出的xls中 列是动态生成的,且单元格中需要用到公式,而xls公式不是用数字列号而是用列字母来表示的,这时需要把数字的列号转成该列对应的字母.因为是按月导出 一个月最多31天,所以刚开始采用的办法是定义一个包含1到31列字母的数组.后来想想这样总不是个办法 万一列数更多

字符串转化为数字相加输出

设计思想:将字符串转化为数字,然后相加,最后输出和. 程序流程图: 源程序代码: public class JavaAdd { public static void main(String[] args){ String str1 = "12"; String str2 ="23"; int toInt1= 0 ; int otherInt=0 ; int taInt=0; toInt1 = Integer.parseInt(str1); otherInt = In

【C语言】将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

#include <stdio.h> /* 编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数.负浮点数) 例如:"12.34" 返回12.34 "-123.34" 返回-123.34 函数原型:double my_atof(char *str) {} */ double my_atof(char *str) { double m=0,n=0,x=1; int flag=1; int flag2=0; if(*str=='-') //

【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数.负整数) 例如:"12" 返回12 "-123" 返回-123 函数原型:int my_atof(char *str) */ #include <stdio.h> int my_atof(char *str) { int flag=0; int m=0; if(*str=='-') { flag=1; str++; } while(*str!='\0') { if(*str<

Python3中字符串中的数字提取方法

逛到一个有意思的博客http://cuiqingcai.com/category/technique/python 在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub 方法 1 totalCount = '100abc' 2 totalCount = re.sub("\D", "", totalCount) 但是没有说明什么含义,于

字符串--java中判断字符串是否为数字的方法的几种方法?

ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.u