Tag: 字符串格式化

使用数组作为string.Format()的参数

当尝试使用数组作为string.Format()方法的参数时,我收到以下错误: FormatException:Index(从零开始)必须大于或等于零且小于参数列表的大小。 代码如下: place = new int[] { 1, 2, 3, 4}; infoText.text = string.Format(“Player1: {0} \n Player2: {1} \n Player3: {2} \n Player4: {3}”, place); Array包含四个值, String.Format()中的参数也相同。 是什么导致这个错误? ( infoText.text只是一个常规的String对象)

使用逗号格式化十进制,保留尾随零

我想将小数转换为字符串,逗号为数千个分隔符,并保留创建小数的相同精度。 (将有2-5位有关数字) decimal d = 1234.4500M; //I’d like “1,234.4500” var notRight = d.ToString(“###,###.#######”); //1,234.45 var alsoNotRight = d.ToString(“###,###.00000”);; //1,234.45000 var notRightEither = d.ToString(“N”); //1,234.45 var notRightEither2 = d.ToString(“G”); //1234.45000 如果不手动解析字符串,是否没有内置方法可以做到这一点? 如果没有单一格式字符串,最简单的方法是什么?

从.ToString(“{0:C}”)格式化的数字中删除$

基本上我正在格式化这样的数字 @String.Format(“{0:C}”, Model.Price) 结果是2,320,000.00美元 然而,我想要的结果是2,320,000.00 ,分别没有$ 。 我怎样才能实现这一点,同时仍然利用.nets本地化处理? 编辑 如果我想改变我的课程,那么当一个人试图获得Price ,他会得到这种格式化价格。 这是我的课 public class Listing : DomainObject { public decimal Price { get; set; } public decimal Commission { get; set; } }

将十进制值格式化为带有2位小数的货币

我从csv文件中获取数据并将其解析为我的应用程序。 在我的csv文件中,我有一个列price ,我使用的值当然是我项目中项目的价格。 但是,csv文件中的价格不包含尾随0,例如,如果物品的价格是$5.00 ,则csv文件的价格是$5 ,如果价格是$9.60 ,则csv将其定为$9.6 。 其他价格如$9.56也不错。 这是我从csv文件中检索价格的方法: Price = string.IsNullOrEmpty(columns[3].Trim()) ? null : (decimal?)decimal.Parse(columns[3]), 在我的class级中, Price是否设为public decimal? Price { get; set; } public decimal? Price { get; set; } public decimal? Price { get; set; } 。 如何格式化返回的内容以解决此问题? Price = String.Format(“Price: {0:C}”, string.IsNullOrEmpty(columns[3].Trim()) ? null : (decimal?)decimal.Parse(columns[3])); 我尝试了以上但没有奏效。 我如何修复它,使csv中的值为$5.9的格式为$5.90 。 编辑: 尝试: […]

花括号在C#字符串中意味着什么?

while (rdr.Read()) { Console.WriteLine(“Product: {0,-35} Total: {1,2}”, rdr[“ProductName”], rdr[“Total”]); } {0,-35}在此代码中的含义是什么?

String.Format – 如何格式化为x位数(无论小数位)?

我需要将浮点数格式化为x个字符(在我的情况下为6,包括小数点)。 我的输出还需要包含数字的符号 所以给定输入,这是预期的输出 1.23456 => +1.2345 -12.34567 => -12.345 -0.123456 => -0.1234 1234.567 => +1234.5 请假设在最后一个字符之前总是有一个小数位。 即没有12345.6数字输入 – 输入将始终小于或等于9999.9 。 我想这必须有条件地完成。

将XXXXXXXXX的社会安全号码(SSN)格式化为XXX-XX-XXXX

我从数据仓库获取社会安全号码(SSN)。 在将其发布到CRM时,我希望将其格式化为XXX-XX-XXXX而不是XXXXXXXXX 。 这就像在第4和第7位用短划线转换一个简单的字符串。 我对C#很陌生,那么最好的方法是什么?

我们应该在资源中存储格式字符串吗

对于我目前正在进行的项目,我必须将特殊格式的字符串提供给第三方服务进行处理。 所以我正在建立这样的字符串: string someString = string.Format(“{0}{1}{2}: Some message. Some percentage: {3}%”, token1, token2, token3, number); 而不是硬编码字符串,我正在考虑将其移动到项目资源中: string someString = string.Format(Properties.Resources.SomeString, token1, token2, token3, number); 在我看来,第二个选项不像第一个选项那么可读,即阅读代码的人必须提取字符串资源以确定最终结果应该是什么样子。 我该如何解决这个问题? 在这种情况下,硬编码格式字符串是否是必要的恶魔?

将逗号分隔列表加入逗号分隔并用单引号括起来

List test = new List(); test.Add(“test’s”); test.Add(“test”); test.Add(“test’s more”); string s = string.Format(“‘{0}'”, string.Join(“‘,'”, test)); 现在s是’test’s’,’test’,’test’s more’但我需要用2个单引号替换内部引号 像这样: ‘test”s’,’test’,’test”s more’ 更新:我按照下面的方式工作,但如果可能的话,我希望更清洁。 string s = string.Format(“`{0}`”, string.Join(“`,`”, test)).Replace(“‘”, “””).Replace(“`”, “‘”);

有哪些优秀的非英语短语有单数和复数forms可用于测试国际化和本地化库?

我一直在研究.NET库来协助应用程序的国际化。 它是用C#编写的,名为SmartFormat ,在GitHub上是开源的。 它包含多种语言的语法数字规则,可根据模板和语言环境确定正确的单数/复数forms。 规则是从Unicode语言复数规则获得的 。 翻译具有依赖于数量的单词的短语(例如名词,动词和形容词)时,指定多个表单,格式化程序根据这些规则选择正确的表单。 英语示例:(注意语法与String.Format几乎相同) var message = “There {0:is:are} {0} {0:item:items} remaining.”; var output = Smart.Format(culture, message, items.Count); 我想为许多支持的语言编写unit testing。 但是,我只会说英语和西class牙语(两者都有相同的语法编号规则)。 有哪些优秀的非英语测试用语可用于这些unit testing? 我正在寻找类似于”There {0:is:are} {0} {0:item:items} remaining.”短语”There {0:is:are} {0} {0:item:items} remaining.” 。 请注意此示例如何根据数量需要特定的动词和名词。 关于语法的说明 : 此库查找:分隔的单词,并根据为语言环境定义的规则选择正确的单词。 例如,在波兰语中,“文件”一词有3种复数forms:1“plik”,2-4“pliki”,5-21“plików”。 因此,您将在格式字符串中指定所有3个表单: “{0} {0:plik:pliki:plików}” 。 这些单词通常从最小可能值到最大值排序,例如”{0:zero:one:two:few:many:other}” ,由Unicode语言复数规则定义。 这里已经讨论了有关此代码的其他信息: 单数/复数单词的本地化 – 语法数字的不同语言规则是什么?