【问题标题】:How to Use substring in c#?如何在 C# 中使用子字符串?
【发布时间】:2011-07-26 06:50:20
【问题描述】:

我有-$2.00 作为字符串。我试图通过使用子字符串删除-$ 将其更改为十进制,但我做错了。有人可以帮我吗?

谢谢。

【问题讨论】:

  • 您使用的 .Net 框架版本是什么?

标签: c# substring


【解决方案1】:
string m = "-$2.00";
decimal d = Math.Abs(Decimal.Parse(m, NumberStyles.Currency));

【讨论】:

  • 只要加上Math.Abs()就不会是负数了
【解决方案2】:

Substring 将返回一个新字符串。我怀疑您的问题可能是由于尝试在适当的位置改变字符串,这不起作用。

你可以这样做:

string result = original.Substring(2);
decimal value = decimal.Parse(result);

根据输入字符串的生成方式,您可能希望改用decimal.TryParse,或其他具有更好错误处理能力的例程。

【讨论】:

    【解决方案3】:

    不要。

    相反,您应该让 .Net 为您完成繁琐的工作:

    Decimal value = Decimal.Parse("-$2.00", NumberStyles.Currency);
    

    如果由于某种原因您不想要负数,请致电Math.Abs

    【讨论】:

      【解决方案4】:

      所有字符串操作都返回一个新字符串,因为字符串是不可变的

      【讨论】:

      • 虽然是真的,但我不确定这与 OP 的问题有何关系。这是为了回应 Reed 的回答吗?
      【解决方案5】:

      如果可以避免的话,我不会使用子字符串。这样做会更简单:

      string result = original.Replace("$", "").Replace("-", "");
      

      【讨论】:

      • 这比使用子字符串有什么好处?您正在示例中创建一个额外的字符串对象。
      • 您如何建议您使用Substring 以更易读的方式执行此操作,同时不创建额外的对象?
      • 这里您正在创建两个对象作为 Replace() 调用的结果。使用 Substring() 你只会创建一个结果字符串。
      • @gtirloni:在这个例子和许多用例中,这没什么大不了的。还有其他方法可以达到相同的结果吗?当然。其中一些效率更高吗?当然。这只是 OP 查询的众多建议修复之一。不过感谢您的反馈。
      猜你喜欢
      • 1970-01-01
      • 2014-08-12
      • 2011-01-19
      • 2012-05-18
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多