【问题标题】:Convert string with escape characters to double将带有转义字符的字符串转换为双精度
【发布时间】:2012-03-24 08:31:05
【问题描述】:

这可能是一个愚蠢的问题,但我不确定如何解决这个问题。您如何将此字符串转换为双精度:

"\"15.4\""

字符串如下:

"15.4"

我需要把它看成一个替身。有可能吗?

【问题讨论】:

    标签: c# string escaping double type-conversion


    【解决方案1】:

    最简单的是:

    double value = Double.Parse("\"15.4\"".Trim('"'));
    

    但是,我鼓励您查看Double.TryParse,以便您可以测试不解析为doubles 的strings。

    double value;
    if(!Double.TryParse("\"15.4\"".Trim('"'), out value)) {
       // it didn't parse
    }
    

    【讨论】:

    • 这不处理输入字符串中包含的'"' 字符。
    • 不客气。我赞成您的回答,以弥补其他人投下的反对票。这个问题的很多正确答案都被否决了;这很奇怪。
    • @phoog:谢谢。我也为你+1。是的,这里似乎有点混乱。
    【解决方案2】:

    快速简便的方法是Convert.ToDouble("15.4".Trim('"'))

    【讨论】:

    • 但是给出的字符串不是"15.4",而是"\"15.4\""
    【解决方案3】:
    var s = "\"15.4\"";
    var d = double.Parse(s.Trim('"'));
    

    这仅在已知'"' 字符位于字符串的开头或结尾时才有效。如果其他配置是可能的,那么处理它们的代码必须稍微复杂一些。

    【讨论】:

      【解决方案4】:

      先修剪引号,再解析字符串:

      string input = "\"15.4\"";
      double n = Double.Parse(input.Trim('"'), CultureInfo.InvariantCulture);
      

      使用不变的文化意味着解析使用句点作为小数分隔符,无论您当前的文化设置如何。

      【讨论】:

      • 为什么投反对票?如果你不解释你认为错误的地方,它就无法改进答案。
      【解决方案5】:

      你需要去掉引号,然后解析它。

      var str = "\"15.4\"";
      str = str.Replace("\"", "");
      var num = double.Parse(str);
      

      【讨论】:

      • 这会将无效字符串转换为有效字符串(例如,\"15\".4\"
      猜你喜欢
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      相关资源
      最近更新 更多