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