在字符串上调用.ToString()以更改其格式

时间:2015-12-14 11:58:14

标签: c# string

为了能够动态更改应用程序中的值,我将其存储在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(我已经为其他项目做了这些,只是没有这些开始是纯粹的前端事情,然后我决定在后端使用它)

我已相应投票

5 个答案:

答案 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)

简短的回答是:不,没有更好的方法

答案很长:

  1. 您可以解析字符串并对其进行转换,但它可能比转换为int更糟糕,然后返回格式化字符串。

  2. 您可以直接将资源中的值存储为整数,而不是字符串。设计人员不允许您直接执行此操作,但您可以使用文本编辑器打开.resx文件(或在Visual Studio中,右键单击它,Open With并选择XML Text Editor),并在正确的部分添加您的资源,如下所示:

    <data name="MaximumSpend" xml:space="preserve" type="System.Int32, mscorlib">
       <value>5000</value>
    </data>
    

    然后,您可以在普通资源编辑器上查看它(您会在Other部分看到您的值。您甚至可以编辑它,而不是“添加更多”)

  3. 或者:

    1. 使用设置文件而不是资源,这可能对此类数据更有意义

答案 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

此代码可用于将字符串值转换为货币。