各位大神好
寫程式遇到問題
希望各位大神能幫忙解答
原本能印出
EX:
0.AAAA
1.BBBB....
小弟想在顯示超過10後1-9前面補0(01)
顯示超過100筆則變為(001)的方式
中間加了一段
textBox3.Text = textBox3.Text.ToString().PadLeft(6, '0');
但只有顯示的第一個有變
其他顯示沒跟著補0請問我該怎麼改比較好?
000.AAAA
1.BBBB....
看了各位大神的寫法
小弟自己亂亂改結果可以了
但是使用者如果是輸入100筆以下
還是無法只出現01...
只能固定為001...3碼
還是有缺陷,只能在燒腦想
改過
int k = 0;
int j = 0;
for (int i = 30; i < rece.Length; i++)
{
if (k % 2 == 0)
{
textBox3.Text += j.ToString("D3") + ".";
j++
}
textBox3.Text += rece[i].ToString("X2");
//textBox3.Text = textBox3.Text.ToString().PadLeft(6, '0');
if (k % 2 != 0)
{
textBox3.Text += "\r\n";
}
k++;
}
先處理數字(和.)的部份
再去接後面的 AAAA/BBBB
試試看
int k = 0;
int j = 0;
for (int i = 30; i < rece.Length; i++)
{
textBox3.Text += j++ + ".";
if (rece.Length > 99)
{ //三位數及以下
textBox3.Text = textBox3.Text.ToString().PadLeft(4, '0');
}
else
{ //小於三位數
textBox3.Text = textBox3.Text.ToString().PadLeft(3, '0');
}
textBox3.Text += rece[i].ToString("X2");
if (k % 2 != 0)
{
textBox3.Text += "\r\n";
}
k++;
}
請參考MSDN官方文件
Standard Numeric Format Strings
for (int i = 0; i < rece.Length; i++)
if (rece.Length < 10)
{
// 印出 1. 2. 至多到 9.
textBox3.Text += i.ToString("D") + "." + rece[i];
}
else if (rece.Length < 100)
{
// 印出 01. 02. 至多到 99.
textBox3.Text += i.ToString("D2") + "." + rece[i];
}
else
{
// 印出 001. 002. 至多到 999.
textBox3.Text += i.ToString("D3") + "." + rece[i];
}
}
001 應該是因為 ToString("D3") 的緣故,
如果改成 ToString("D6") 就變成 000001
C# 好囉嗦喔XD
我是用 js 的思維去改的
using System;
public class Test
{
public static void Main()
{
int[] rece = new int[500];
for (int i = 1; i <= rece.Length; i += 1) {
Console.WriteLine(new String('0', Math.Abs((i.ToString().Length) - 3)) + i.ToString());
}
}
}
想要幾位數就改
(i.ToString().Length) - 位數)
就好
所以你要的
根據使用者輸入 來變更位數
就把使用者輸入的值(筆數)轉字串取長度
放到位數
C# 有一個String.Format 可以設定數值的字串格式
可以參考下方程式碼:
string myNumStr = String.Format("{0:00000.0000}", 876.54); // 輸出 00876.5400
其中00000.0000 代表整數有5位,小數點後有4位
只要整數位不足5位,或者小數點後不足4位數,就補0
https://docs.microsoft.com/zh-tw/dotnet/api/system.string.format?view=netframework-4.8
用ToString()就可以達成
string txtlist = txt_count.Tostring(); //總數轉字串取得位數
string strlen="";
for(int i=0;i<txtlist.Length;i++)
strlen += "0";
若多個textBox要轉換,可以指定元件限制掃的範圍
foreach(Control x in (Your_form Or Item).Controls)
{
//"textBox" + item_num 要轉換的元件名稱 ex: 1,2...etc whatever
//若textBox有順序item_num跑迴圈便可,或用list紀錄名稱都可
if(x is TextBox && x.Name == "textBox" + item_num)
{
string[] txt_spilt = x.Text.Split('.');
x.Text = Convert.ToInt32(txt_spilt[0]).ToString(strlen) +"."+ txt_spilt[1];
}
}
若只需單一個textBox
string[] txt_spilt = textBox3.Text.Split('.');
textBox3.Text=Convert.ToInt32(txt_spilt[0]).ToString(strlen) +"."+ txt_spilt[1];