我试图在我的代码中将Arr 1格式化为currentcny,但它在我的Ammount专栏中没有表现得很好(翻译=不工作)
这是我的代码块;
public void TransactionLog()
{
listView1.View = View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
listView1.Columns.Add("Buy/Sell", 97);
listView1.Columns.Add("Amount", 95);
listView1.Columns.Add("Transaction ID", 100);
string[] arr = new string[3];
ListViewItem item;
string URT = "https://api.eveonline.com/char/WalletTransactions.xml.aspx?keyID=4602486&&vCODE=BHGVeXQkRLKLkIkZQHdeyUxmUz9EfUwbvGzoc2eO4ZR8kRMYxk8PbD4LMwLF7BvH";
XmlDocument XMLtrans = new XmlDocument();
XMLtrans.Load(URT);
XmlNodeList TRnodelist = XMLtrans.SelectNodes("/eveapi/result/rowset/row");
foreach (XmlNode xmlnode in TRnodelist)
{
if (xmlnode.Attributes["transactionType"] != null)
arr[0] = xmlnode.Attributes["transactionType"].InnerText;
if (xmlnode.Attributes["price"] != null)
arr[1] = xmlnode.Attributes["price"].InnerText;
if (xmlnode.Attributes["transactionID"] != null)
arr[2] = xmlnode.Attributes["transactionID"].InnerText;
item = new ListViewItem(arr);
listView1.Items.Add(item);
}
我已经尝试过了;
string.Format(CultureInfo.CreateSpecificCulture("ja-JP"), "{C:0}", arr[1] = xmlnode.Attributes["price"].InnerText);
但我只是犯了错误。
答案 0 :(得分:1)
作为bokibeg commented,String.Format
使用composite formatting功能。这是语法;
{index[,alignment][:formatString]}
如您所见,索引组件在字符串组件之前。
其他问题是,The "C"
format specifier适用于数字值。这意味着,您无法格式化字符串。
如果您的xmlnode.Attributes["price"].InnerText
返回一些有效的数值,则可以在尝试格式化之前使用正确的类型Parse
方法对其进行解析。例如,如果返回有效的int
,则需要在格式化之前使用int.Parse()
。
string.Format(CultureInfo.CreateSpecificCulture("ja-JP"),
"{C:0}",
int.Parse(xmlnode.Attributes["price"].InnerText));
答案 1 :(得分:0)
您必须替换 {C:0} with {0:C}
string.Format(CultureInfo.CreateSpecificCulture("ja-JP"), "{0:C}", arr[1] = xmlnode.Attributes["price"].InnerText);