生成数字,左边补0,效率问题,大家来看
生成,左边补00000
0001
0002
0003
0004
至到
9999
我的程序
for (int number = 0; number <= 9999; number++)
{
if (number > 1000)
{
this.textBox3.Text += number.ToString() + "\r\n";
}
else
{
this.textBox3.Text += number.ToString().PadLeft(length, '0') + "\r\n"; //位数不够时从左笾开始用0补
}
}
如上: 从 0000 开始到 9999生成完花了 两分多钟,怎么会这么慢? --------------------编程问答-------------------- right('0000'+number.tostring(),4) --------------------编程问答-------------------- 时间都花在拼字符串上了 --------------------编程问答-------------------- 不用加if判断,直接这样即可
this.textBox3.Text += number.ToString().PadLeft(4, '0')+ "\r\n"; --------------------编程问答-------------------- 慢就对了,使用StringBuilder效率拼接字符串,效果会大大提高 --------------------编程问答-------------------- ui更新了10000次,不慢才怪 --------------------编程问答-------------------- 楼主的方法既麻烦又慢,一行程序就搞定了而且要快几百倍,
for (int number = 0; number <= 9999; number++)
{
this.textBox3.Text += number.ToString("d4") + "\r\n";
}
或者:
for (int number = 0; number <= 9999; number++)
{
this.textBox3.Text += String.Format("{0:d4}\r\n",number);
} --------------------编程问答-------------------- 将小于1000的整数转换为
0001
0002
0003
0004
0005
.....
0999
1000
string xx0 = "999".PadLeft(4, '0');//0999
string xx1 = "1".PadLeft(4, '0');//0001
--------------------编程问答-------------------- 这样最快,
select right((10000+86),4)
StringBuilder sb=new StringBuilder();
for (int number = 0; number <= 9999; number++)
{
sb.AppendFormat("{0:D4}\r\n",number);
}
this.textBox3.Text +=sb.ToString();
--------------------编程问答-------------------- --------------------编程问答-------------------- 同意stonespace 的观点,顶一个 --------------------编程问答--------------------
就是这个里,另外stonespace在6楼的方法也是很慢的,同样刷新了10000次界面,界面的刷新开销非常大。 --------------------编程问答-------------------- 使用StringBuilder ,效率快,因为它是直接在后面追加的
补充:.NET技术 , C#