我使用逗號分隔值列表創建了一個字符串,但這些數字值具有不同的格式。目前我使用的是這樣的:從多個格式的數值中創建逗號分隔的字符串
var values = new StringBuilder();
// These are all of type double
values.AppendFormat("{0:F1},", aLength);
values.AppendFormat("{0:F4},", anAngle);
values.AppendFormat("{0:F1},", aHeight);
values.AppendFormat("{0:F2},{1:F2},", a2DPoint.X, a2DPoint.Y);
// while these are all of type int
values.Append(anID).Append(",");
values.Append(anInt).Append(",");
values.Append(anotherInt);
if (aListOfInt.Count > 0)
{
values.Append(",");
values.Append(String.Join(",", aListOfInt));
}
var resultString = values.ToString();
這是正確的方法嗎?我也可以用String.Join這樣做,事先創建一個類似於上面的StringBuilder values
的List<string>
,但是會更好嗎? 有沒有更優雅的方式?
注:我是新來的C#
使用了逗號分隔的字符串十進制數字是一個壞主意 - 有很多文化在他們的數字中使用逗號,這是造成問題的常見原因。例如,可以使用逗號來分隔數千個,甚至是小數點。當轉換成字符串和字符串時,至少使用'CultureInfo.InvariantCulture',否則你剛剛破壞了你的應用程序半個星球:) – Luaan 2014-09-04 07:28:01
@Luaan啊,這是一個很好的觀點。在這種特殊情況下,這是正在寫入文件的信息,用於與舊系統的向後兼容,而舊系統甚至用不同的語言編寫。我們正試圖改變事情的方式。但是你的評論是我們應該考慮的事情。感謝那。 – alondono 2014-09-04 11:03:09
我認爲最好的實現方法是爲每個度量單位(即長度,角度,點)創建一個類並覆蓋它們的ToString方法,並讓多態性爲您工作。至於加入這些值,string.Join是最乾淨的選項。 – brz 2014-09-04 18:41:27