C# string.format-逗号作为十进制分隔符

C# string.format-逗号作为十进制分隔符,c#,string-formatting,C#,String Formatting,给定输入123.45,我试图通过String.Format获取输出123,45 由于我使用的系统,实际的格式字符串(例如,{0:0.00})保存在配置文件中,并在以后的管道中进行转换 编辑配置文件以添加新格式是“安全的”,我可以很快完成这项工作。稍后编辑实际的解析器是“有风险的”,因此需要更重要的QA资源,我需要避免这种情况 因此,需要注意以下几点: 我只能访问string.Format(模式、输入)。没有过载 我无法发送本地化。我知道如果我发送string.Format(newsystem.

给定输入
123.45
,我试图通过
String.Format
获取输出
123,45

由于我使用的系统,实际的格式字符串(例如,
{0:0.00}
)保存在配置文件中,并在以后的管道中进行转换

编辑配置文件以添加新格式是“安全的”,我可以很快完成这项工作。稍后编辑实际的解析器是“有风险的”,因此需要更重要的QA资源,我需要避免这种情况

因此,需要注意以下几点:

  • 我只能访问
    string.Format(模式、输入)
    。没有过载
  • 我无法发送本地化。我知道如果我发送
    string.Format(newsystem.Globalization.CultureInfo(“de”),“{0:0.00}”,123.45)
    那么我就得到了我需要的东西。但我无法通过本地化
那么这能做到吗?

是否有任何格式可以传递到
string.format
,该格式将
123.45
转换为
123,45

如果您可以将输入乘以100,则以下操作应该有效:

double input = 123.45;
string pattern = "{0:###\\,##}";

var result = String.Format(pattern, input*100);
只是为了好玩:)

当然,这只适用于有光标的情况,就像在控制台中一样,否则退格控制字符没有效果


很抱歉,我想不出一个真正的方法来实现这一点。

为什么不尝试使用replace将“.”替换为“.”method@Ehsan.Saradar我所能访问的只是一个配置文件,我在其中指定
格式
输入到
字符串.格式
。我需要指定在此文件中可以使用的内容。如果我以后可以修改代码,我已经有了一个可行的解决方案;-)在调用string.Format时,值的类型是什么?已经变成双人房了吗
string.Format(new System.Globalization.CultureInfo(“de”),“{0:0.00}”,“123.45”)
不起作用(注意最后一个参数是作为字符串传递的)。@RichardIrons是的-它已经变成了一个
浮点数
。这不是关于
评论
我们在问具体问题,因为似乎有人在你的
QA
测试阶段丢了球。。这些类型的东西应该在那里以及在单元测试/测试开发中都有,非常棒的跳出框框思考,所以我投了赞成票,尽管遗憾的是我不能乘以100。但是谢谢!
        double value =123.45;
        Console.WriteLine(String.Format("{0:#0.00}\b\b\b,", value));