为了能够动态更改应用程序中的值,我将其存储在resx文件中。当然这是一个字符串。
MaximumSpend - 5000
在我的代码中,我int.Parse(MyApp.MaximumSpend)
。现在我可以在一个地方更改最大支出,应用程序可以处理它而无需进一步更改。
在前端,我想将价值显示为$ 5,000。 如果这是一个int,我会做
MyInt.ToString("0#,##0")
但它已经是一个字符串了。我可以转换为int,然后在其上调用.ToString()
,但这似乎很浪费。
在我的前端代码中有更好的方法可以将5000更改为5,000吗?或者更改为int
并返回最佳方式?
更新:谢谢大家。我已经完成了int.parse并返回一个字符串。
$('#MaximumSpend').text("@int.Parse(MyResources.MyNamespace.MaximumSpend).ToString("##,###")");
我将来会使用web.config(我已经为其他项目做了这些,只是没有这些开始是纯粹的前端事情,然后我决定在后端使用它)
我已相应投票
答案 0 :(得分:3)
只需克隆en-US
文化(使用$
作为CurrencySymbol
),将其CurrencyDecimalDigits
设置为0
并格式化您的号码与The "C"
format specifier和 克隆文化为;
int i = 5000;
var clone = (CultureInfo)CultureInfo.GetCultureInfo("en-US").Clone();
clone.NumberFormat.CurrencyDecimalDigits = 0;
Console.WriteLine(i.ToString("C", clone)); // $5,000
编辑:首先看起来你有一个字符串"5000"
,你需要先用int
解析它到int.Parse
然后然后可以使用它整数值,用于生成特定格式的字符串。
int i = int.Parse("5000");
...
...
答案 1 :(得分:3)
Resx文件不是配置文件。它们用于存储静态资源,如本地化字符串,图像等。
您可能需要的是一个设置,它是Visual Studio属性中的两个选项卡。在那里,您可以定义一个应用程序范围的设置,该设置被键入为int,它将生成一个强类型的访问器。无需解析*。
Properties.Settings.Default.MyInt.ToString("0#,##0");
以下是有关该主题的更多信息:Using Settings in C#。
* 从技术上讲,它仍然被解析,但.NET会为你做。
答案 2 :(得分:1)
简短的回答是:不,没有更好的方法
答案很长:
您可以解析字符串并对其进行转换,但它可能比转换为int
更糟糕,然后返回格式化字符串。
您可以直接将资源中的值存储为整数,而不是字符串。设计人员不允许您直接执行此操作,但您可以使用文本编辑器打开.resx文件(或在Visual Studio中,右键单击它,Open With
并选择XML Text Editor
),并在正确的部分添加您的资源,如下所示:
<data name="MaximumSpend" xml:space="preserve" type="System.Int32, mscorlib">
<value>5000</value>
</data>
然后,您可以在普通资源编辑器上查看它(您会在Other
部分看到您的值。您甚至可以编辑它,而不是“添加更多”)
或者:
答案 3 :(得分:0)
我认为从int
更改回string
也许是最好的方法。例如:
string strIntString = strMaxSpend.Split("-").Trim();
int nValue;
if (!Int32.TryParse(strIntString, out nValue))
{
//Parse failed
}
注意我使用TryParse
代替直接Convert
调用,因为转换失败,因此我们可能会顺利失败。
然后执行问题中提到的ToString()
部分。
答案 4 :(得分:-2)
试试这个:
string s = "2342314854";
string s1 = string.Format("{0:C}", Double.Parse(s));
结果将是:$2,342,314,854.00
此代码可用于将字符串值转换为货币。