dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString()值为LSH0000001 想让它的值加1后为LSH0000002Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString()) + "1";
Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString()) + 1;两个都不行,呵呵,简单的问题难住了我,帮忙解决下吧,谢谢,散分

解决方案 »

  1.   

    库里字段SerialNo的值都是类似LSH0000001  LSH0000002 LSH0000003  LSH0000004的值
      

  2.   

    恐怕没那么简单。字符串从后向前判断,直到出现第一个字母。转换为数字进行运算,再补零还原。string CalcEndSN(string strSN, int iAmount)
        {
            if (string.IsNullOrEmpty(strSN)) throw new Exception("错误:SN不可为空。");
            int iPos = -1;
            for (int i = strSN.Length - 1; i >= 0; i--)
            {
                if (char.IsDigit(strSN[i])) iPos = i;
                else break;
            }
            if (iPos < 0)
            {
                if (iAmount != 1) throw new Exception("错误:无效的数量。");
                return strSN;
            }
            int iLen = strSN.Length - iPos;
            double dMax = Math.Pow(10, iLen);
            if (iAmount > dMax) throw new Exception("错误:数量超限。");
            double dBegin = double.Parse(strSN.Substring(iPos));
            double dEnd = dBegin + iAmount - 1;
            string strR = strSN.Substring(0, strSN.Length - dEnd.ToString().Length) + dEnd.ToString();
            return strR;
        }
    自己写的,没有经过充分测试。
      

  3.   

    "LSH"+Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString()Substring(3)) + 1).PadLeft(7)
      

  4.   

    string str=dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString();
    int Number=int32.parse(str.substring(8,1).tostring())+1;
    string MaxNumberStr=str.substring(0,8)+Number.tostring();
      

  5.   

                string s = "LSH0000002";
                int a = int.Parse(s.Substring(3));
                string r = string.Format("LSH{0:0000000}", a + 1);
                Console.WriteLine(s);
                Console.WriteLine(r);LSH0000002
    LSH0000003
    请按任意键继续. . .
      

  6.   

    Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length)
      

  7.   

    最佳答案:
    youNumber = String.Format("LSH{0:0000000}", Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"]));
      

  8.   

    "LSH"+Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length-3)
      

  9.   

    这里Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"])是lSH开头的话 转换不会报错吗???
      

  10.   


                string str = dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString();
                int number = Convert.ToInt32(str.Replace("LSH", ""));
                string result = "LSH" + (number + 1).ToString().PadLeft(7, '0');
      

  11.   

    "LSH"+Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length-3)String.Format("LSH{0:0000000}", Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length - 3))
    保存进去了,可是存进去的的是LSH      2  而不是LSH0000002 中间的0的都没有了
      

  12.   

    "超简单"---不是计算机太智能就是你大脑"超简单"
    文本型,字符型能直接相加 开玩笑吧public static string a(string a)
    {
    //"LSH0000001"
    int len=a.Length;
    string sz=a.Substring(3,len-3);
    int shuzhi=Convert.ToInt32(sz,10);
    shuzhi=shuzhi+1;
    string shu=shuzhi.ToString();
    string jg="";
    if(shu.Length<len-3)
    {
    int shu_len=len-3-shu.Length;
    string q="";
    for(int i=0;i<shu_len;i++)
    {
    q=q+"0";
    }
    jg="LSH"+q+shu;
    }
    return jg;
    }
      

  13.   

    OK 
    谢谢ojlovecd的答案搞定
    分就这么点,散去了,呵呵,谢谢诸位
      

  14.   

    "LSH"+Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length-3,"0")
      

  15.   

    "LSH"+Convert.ToString(Convert.ToInt32(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Substring(3)) + 1).PadLeft(dtMaxSerialNo.Rows[0]["MaxSerialNo"].ToString().Length-3,'0'); 
      

  16.   

    wdgphc 谢谢,结贴时你给出的答案,谢谢了