【问题标题】:convert numeric + alphabetical string [closed]转换数字+字母字符串[关闭]
【发布时间】:2014-01-13 09:14:10
【问题描述】:

如何将指数值转换为等效的 .Net 数据类型值。 有谁知道如何将数字 + 字母字符串转换为 long 或 int?

Example of a string : 3e317188a00577

【问题讨论】:

  • 结果是什么,为什么?
  • 但是这个例子不是一个有效的longint
  • 字符串是什么格式的?看起来像十六进制?如果是这样,那么已经有很多答案了:stackoverflow.com/questions/1139957/…
  • 你想从这个字符串中删除字母并将剩余的字符转换为数字吗?
  • 仅供参考:数字+字母通常称为字母数字。

标签: c# asp.net-mvc


【解决方案1】:

也许您只想提取数字来创建long?你可以使用Char.IsDigit 和 LINQ:

Char[] digitsOnly = "3e317188a00577".Where(Char.IsDigit).ToArray();
if(digitsOnly.Length > 0)
{
    long result;
    if (long.TryParse(new string(digitsOnly), out result))
    {
        Console.Write("Successfully parsed to: " + result);
    }
}

结果:Successfully parsed to: 331718800577

如果您想将其从十六进制解析为 int/long:

long result = long.Parse("3e317188a00577", System.Globalization.NumberStyles.HexNumber);

结果:17505812249314679

【讨论】:

  • 感谢大家的回复!感谢大家,我得到了一些启发。 Tim Schmelter 您的解决方案奏效了。再次感谢!
【解决方案2】:

如果你只想要字符串中的数字,那么试试这个:

longValue = Long.parseLong("3e317188a00577".replaceAll("\\D+",""), 10);

【讨论】:

    【解决方案3】:

    你给我们的字符串在我看来就像一个十六进制值。在这种情况下,您可以像这样将其转换为 int/long:

    string numberAsHex = "3e317188a00577";
    long numberAsInt = long.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
    

    【讨论】:

      【解决方案4】:

      这是一个类似的问题: Convert numbers with exponential notation from string to double or decimal

      方法是:

      String myString = "3e317188a00577";
      Double myDouble = double.Parse(myString, CultureInfo.InvariantCulture);
      

      【讨论】:

        猜你喜欢
        • 2019-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        相关资源
        最近更新 更多