【问题标题】:Is there a way to trim leading characters using String.Format()?有没有办法使用 String.Format() 修剪前导字符?
【发布时间】:2017-06-23 21:45:59
【问题描述】:

需要知道有一种方法可以使用 String.Format 从字符串中删除前导字符。我在一些现有代码中有一个限制,我只能为其传递一个字符串和一个格式字符串。

那么你可以做类似的事情

String.Format("Test output: {0:#}","001")

并产生输出

"测试输出:1"

我认为答案是否定的,但我想确定一下。

编辑:为了澄清,格式字符串将被放入配置文件中,要格式化的字符串是来自数据库的值。我无法对其执行任何代码。必须通过格式字符串。

【问题讨论】:

  • 你可以 TrimStart("0") 参数
  • string 中修剪前导零不是正常功能,因此不支持。 # 格式也适用于数字。
  • 不,我认为没有任何方法可以单独使用 String.Format 的特定重载来完成此操作。

标签: c# string-formatting


【解决方案1】:

你可以在你传递的 arg 上做到这一点

String.Format("Test output: {0:#}", "001".TrimStart('0'))

或者,您也可以在结果字符串上使用正则表达式进行替换查找。


另一种选择是使用IFormatProvider 的自定义实现定义并传入您自己的格式化程序。我不确定这是否允许或不基于您的上次编辑。


但是,基于列出的限制,仅使用格式字符串输入是没有办法的

【讨论】:

  • 不支持数字为0.5的情况。输出将是“.5”
  • @KernelMode - 这有什么问题? 0.5 定义为 1 前导 0,.5 仍然是有效值。问题的语言中没有任何内容指定小数(小数)应至少保留 1 个前导 0。
  • @Igor 不幸的是,我无法进行 TrimStart。否则,您的答案会很好。不知道 KernelMode 在说什么
  • @Kevin - 作为参数传递给string.Format 的自定义格式提供程序怎么样?
  • @Igor 不。真的无法访问代码。只能提供格式字符串
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多