有人可以指导我或者至少给我教程链接我想用以下格式创建字母数字自动增量ID /代码123-A00000010-A12 123和A12是常量而A00000010是自动增量。
答案 0 :(得分:2)
对于一项简单的任务可能有些过分,但我觉得要做一个练习:
ID类
public class AlphaNumericID
{
private string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public int Alpha { get; protected set;}
public int Numeric { get; protected set; }
public int NumericLenght { get; protected set; }
public string KeyFront { get; protected set; }
public string KeyEnd { get; protected set; }
public AlphaNumericID(string keyFront, string keyEnd, int numericLength)
{
Alpha = 0;
Numeric = 1;
KeyFront = keyFront;
KeyEnd = keyEnd;
NumericLenght = numericLength;
}
public void Increment()
{
Numeric++;
if (Numeric == Math.Pow(10, NumericLenght))
{
Alpha++;
Numeric = 1;
if (Alpha == chars.Length)
throw new Exception("Overflow!");
}
}
public override string ToString()
{
return String.Format("{0}-{1}{2}-{3}", KeyFront, chars[Alpha], Numeric.ToString().PadLeft(NumericLenght, '0'), KeyEnd);
}
}
您可以这样使用:
声明
var id = new AlphaNumericID("123", "A12", 8); //Will create 123-A00000001-A12
(虽然如果你知道你的数据库永远不会那么高,你可能会考虑使用较短的id)
增量
id.Increment();
输出
id.ToString();
这种封装的好处是你可以轻松地扩展和改变它的内部实现,尽管它可能对你的特定需求来说太大了。
答案 1 :(得分:1)
我使用一个简单的计数器来递增,第二个属性使用该数字并输出带有您ID格式的格式化字符串。
你写的是这样的:
int Counter= 100;
string ID=String.Format("123-A{0}-A12",Counter);
答案 2 :(得分:1)
你说的是这样的话:
private void bntOK_Click(object sender, EventArgs e)
{
int cnt10, ntEQ;
cnt10 = 10;
string id = null;
string dsp = txtInput.Text.Trim(' ');
int rs = string.Compare(dsp, "9");
if (rs == 0)
{
id = string.Format("123-000000{00}-A12", cnt10);
txtResult.Text = id;
}
else
{
int dspt = Convert.ToInt16(txtInput.Text.Trim());
ntEQ = dspt + 1;
id = string.Format("123-000000{00}-A12", ntEQ);
txtResult.Text = id;
}
}