【问题标题】:Is there a better way to remove characters from an integer in C#?有没有更好的方法从 C# 中的整数中删除字符?
【发布时间】:2014-08-20 14:16:27
【问题描述】:

我需要检查一个整数是否有 6 个字符,如果有,删除前三个字符并返回结果整数。否则,只返回原始整数。这就是我所拥有的,我想知道 C# 中是否有更好/更快/更有效的方法?

public static int MyMethod(int originalInt)
    {
        int outputInt = originalInt;

        string temp = originalInt.ToString();

        if (temp.Length == 6)
        {
            temp = temp.Substring(3);
            if (!Int32.TryParse(temp, out outputInt))
            {
                outputInt = originalInt;
            }
        }

        return outputInt;
    }

【问题讨论】:

  • 从数学上考虑这个不是更好吗? 6 位整数介于 100000 和 999999(含)或 -99999 和 -10000 之间。要“删除”数字,请使用 % 运算符。
  • 您可以通过检查数字的值(>= 1000000 和
  • 您希望前 3 个字符作为新整数,还是其余字符?如果你有“123456”,你想要“123”还是“456”?
  • 我想要“456”作为新整数
  • 是的,我们只能假设正整数

标签: c# parsing int


【解决方案1】:

为什么要使用字符串?

if (originalInt >= 100000 && originalInt < 1000000)
    return originalInt % 1000;
return originalInt;

(假设originalInt 总是正数)

【讨论】:

  • 为什么你需要 if,为什么不只是 % 1000000 ??
  • 因为否则它不回答问题?
  • @YuliamChandra - 因为,显然,如果数字不在 100000 和 999999 之间,我们应该“返回原始整数”。如果它在这些数字之间,我们应该“删除前 3 个字符” - 如果您能解释 %1000000 将如何实现 其中一个,我会印象深刻。
  • @Damien_The_Unbeliever 我相信你在第一次比较中多了一个0;它的写法,永远不会满足。
  • @decPL - 已更正。我确信我数对了,但不知何故最终得到了多余的数字。
【解决方案2】:

试试这个:

public static int MyMethod(int originalInt)
    {
    return (originalInt > 99999 && originalInt <1000000)?originalInt % 1000 :  originalInt;
    }

它返回你需要的结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2017-04-07
    • 2019-03-25
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多