如何构造顺序ID逻辑

时间:2012-08-01 09:13:11

标签: c# sequential

当表单“insert”出现时,我得到了一个textbox1.text =“J001”。 “插入”中有一个按钮,所以如果我们点击那个按钮,mbox会说“添加J001”。

但是,我想改变textbox.text =“J002”;所以我正在使用。

string splitter=textbox1.text.toString().subString(1)

它将返回001.现在我需要做什么002?我不能在它上面+1,另外,我没有使用任何数据库,因此当我们关闭表单并重新打开它时它将再次成为“J001”。单击按钮,文本变为“J002”。关闭表格,重新打开,显示“J001”和无限循环。

3 个答案:

答案 0 :(得分:1)

很难理解你想要的东西,但也许这就是你要找的东西:

string splitter = textbox1.Text.ToString().Substring(1);

try {
    int number = Convert.ToInt32(splitter) + 1;
} catch (FormatException e) {
    // Not a number...
}

textbox1.Text = String.Format("J{0}", number.ToString());

答案 1 :(得分:1)

使用静态变量跟踪您的号码,然后简单地格式化文本并将计数器加1。如果您关闭应用程序并重新启动它,计数器将重新开始。如果你想要它持久存在,你必须将值保存在像数据库这样的地方。

static int _counter = 0;

...

textbox1.Text = string.Format("J{0,2}", ++_counter);

答案 2 :(得分:0)

这样的东西:它将处理可变长度前缀和可变长度数(最长为长,所以19位)。

首先它计算前缀后面的位数,然后用增量值替换这些数字。

string str = "J9999";

int firstDigit = str.Length;

for (; firstDigit > 0; firstDigit--)
{
    if (!char.IsDigit(str[firstDigit - 1]))
    {
        break;
    }
}

if (firstDigit < str.Length)
{
    long num = long.Parse(str.Substring(firstDigit));
    num++;

    int numOfDigits = str.Length - firstDigit;
    var temp = num.ToString("D" + numOfDigits);

    //Uncomment this for fixed length with overflow: J999->J000, otherwhise you have J999->J1000
    //temp = temp.Substring(temp.Length - numOfDigits);

    str = str.Remove(firstDigit) + temp;
}