亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當數字是整數而不是小數或雙精度時,為什么 WriteLine 會跳過 Tab

當數字是整數而不是小數或雙精度時,為什么 WriteLine 會跳過 Tab

C#
米脂 2023-05-14 16:36:24
這似乎是一種奇怪的行為。我在下面有這段代碼,它從數據庫中提取值,然后將它們寫入文件。x.Amount 是雙精度類型的屬性。StringWriter sw = new StringWriter();foreach (var x in result){                  sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount + "\t" + x.age);}問題是當金額為整數或整數時,標簽不會被打印出來。所以我明白了。name:   4    350.5    26name:   4    350.25   29name:   4    2000.25  29name:   4    350 29正如您在上面看到的,當金額為整數時,文件中似乎缺少選項卡。我正在使用下面的代碼將它寫入文件。using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.Default))            {                writer.Write(sw.ToString());            }
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您的標簽沒有丟失;您的編輯器只是選擇該制表位。

要將文本對齊到列中,請指定列的寬度。在這里,我會將您的金額填充到 8 個字符。根據需要更改此數字。

我提出兩種解決方案。我推薦第一個。

解決方案 1:使用復合格式

使用Composite Formatting將數量填充到 8 個字符:

StringWriter sw = new StringWriter();

foreach (var x in result)

{

? ? sw.WriteLine(String.Format("name:\t{0}\t{1,-8}\t{2}", 4, x.Amount, x.age));

}

解決方案 2:連接

雖然我建議使用 Composite Formatting,但您可以在沒有以下情況的情況下執行此操作:


StringWriter sw = new StringWriter();

foreach (var x in result)

{

? ? sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount.ToString().PadRight(8) + "\t" + x.age);

}


查看完整回答
反對 回復 2023-05-14
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

選項卡沒有丟失。將選項卡視為帶有列的表格。每列開始是一個制表位位置。不管 column1 中有多少個字母,下一個 column2 總是從左邊緣開始。因此,第 1 列和第 2 列中的值將縮小它們之間的間距??雌饋黹g距是錯誤的,但它實際上改變了列,它只是看起來是錯誤的。

a |b |c

aaaa |bbbb |c


查看完整回答
反對 回復 2023-05-14
  • 2 回答
  • 0 關注
  • 195 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號