【问题标题】:How to convert non-numeric Strings to Int? [closed]如何将非数字字符串转换为 Int? [关闭]
【发布时间】:2021-10-16 00:43:23
【问题描述】:

过去 30 分钟我一直在寻找这个简单的问题,但是当我知道 Parse 方法由于字符串可能不是数字而无法工作时,他们都说要使用 Parse 方法。但是,我仍然希望它根据字符串给出一个数字,而不是仅仅抛出一个错误。有什么想法吗?

【问题讨论】:

  • 您能提供一些示例字符串和预期的输出吗?否则,我们无法有效回答。
  • 你想如何转换它?例如,你想通过字符串的长度来获取一个 int 值吗?
  • 我希望能够放入任何字符串并得到一些 int 值,无论是 ascii 值还是类似的东西
  • 如果你想要一个像“ABC”这样的字符串被解释为(int)'A' + (int)'B' + (int)'C'(这是我假设你在谈论的(从你下面的评论中:“就像我上面说的让它给我原始的 ASCII 值就可以了”(顺便说一下,你上面没有这么说)),那么写起来很容易。像int total = 0; foreach (char chr in "ABC") { total += (int) chr; } 这样的东西(这只是在顶部我的脑袋)。也就是说,除非你告诉我们,否则我们不可能知道你想要什么

标签: c# string parsing


【解决方案1】:

如果您只想要一个基于字符串的数字,并且您并不关心它是哪个数字,只要该字符串用于创建它,那么GetHashCode() 可能就是您要查找的内容。

int num = str.GetHashCode();

如果两个字符串相同,则GetHashCode() 将为它们返回相同的数字。如果两个字符串不同,那么GetHashCode() 很可能(但不能保证)为它们返回不同的数字。

【讨论】:

  • 非常感谢!这几乎正​​是我所需要的!
【解决方案2】:

除了TryParse(),您还需要其他功能吗?

if( double.TryParse(text, out double x)) 
{
  // use numeric `x` here
} 

if( int.TryParse(text, out int i)) 
{
  // use integer `i` here
}

【讨论】:

  • 是的,我需要它来处理不包含数字的字符串。就像我上面说的那样,让它给我原始的 ASCII 值就可以了
  • @ElgenT - 就像我说的,请edit您的问题并添加一些示例。你期望什么样的字符串和什么样的结果。没有这些信息,您将不会得到任何好的答案。
  • @ElgenT - 您需要比“原始 ASCII 值”更具体。即使我们忽略 Unicode 的复杂性,每个字符都有自己的 ASCII 值。它们应该如何组合成一个 Int?
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 2019-07-16
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多