【问题标题】:Can I evaluate a string in C#我可以在 C# 中评估一个字符串吗
【发布时间】:2017-02-15 19:02:24
【问题描述】:

我必须先填充一个字符串并返回它,然后才能对字符串执行子字符串。 有没有办法可以在填充后评估字符串并将两个语句组合成 1 行?

这行得通

    string numberOfRecords = allRecords.Count().ToString().PadLeft(8, '0');
    numberOfRecords = numberOfRecords.Substring(numberOfRecords.Length-8,8);

但这不是

    string numberOfRecords = allRecords.Count().ToString();
    numberOfRecords = numberOfRecords.PadLeft(8, '0').Substring(numberOfRecords.Length-8,8);

【问题讨论】:

  • 为什么要在PadLeft 通话后拨打Substring?在那种情况下,Substring 本质上不是无操作吗?
  • 不清楚你在问什么,也不清楚你想做什么。根据此处的少量信息,您似乎应该使用指定八位数字的自定义数字格式简单地格式化 allRecords.Count() 值,并将 PadLeft()Substring() 排除在外。除此之外,您实际上有哪些具体问题需要我们帮助解决?
  • @petelids 除非该数字大于 99,999,999。在这种情况下,结果将相差几个数量级(100,000,000 将被截断为 10,000,000)
  • 你说得对@Rob,我在考虑需要填充的较小数字。猜测一下,在更大的数字上使用子字符串会更糟,但很难说出 OP 想要实现什么......

标签: c# string substring


【解决方案1】:

string 在 C# 中是不可变的。在第一种情况下,您正在执行PadLeft(8, '0') 并分配给numberOfRecords。所以它包含更新的值(带有PadLeft)。

但在第二种情况下,您正在执行PadLeftnumberOfRecords 的值将相同。当您执行 numberOfRecords.Length 时,这将失败,这将是原始值 (allRecords.Count().ToString()),并且可能会引发异常。

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 2014-01-28
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多