如何去除负数的前导零

5
如何在C#中去掉负数的前导零?
例如,我希望‘-01’转换为‘-1’。

1
在C#中,'字符用于括起字符。您需要使用"来表示字符串。由于您正在谈论数字,因此您确实需要更清楚地了解字符、字符串或数字。您正在从什么转换,以及您要转换成什么?投票关闭。 - Jonathan Wood
如果您指定了输入类型和输出类型,我们可以构建一个很好的函数,我相信您也能做到。 - Antoine Pelletier
4个回答

3
假设您的输入是一个实际的字符串,那么您可以使用任何常见的整数解析方法,例如 Int32.Parse()Convert.ToInt32(),应该可以处理前导零:
Convert.ToInt32("-01"); // yields -1

幕后花絮

如果你深入这些方法的实现细节, 你会发现这调用了底层的StringToNumber()方法和随后的ParseNumber()方法,它们应该处理前导和尾随零:

// This is called via the following methods
// 1.) Convert.ToInt32()
// 2.) Int32.Parse()
// 3.) Number.ParseInt32()
// 4.) StringToNumber() (this method)
// 5.) ParseNumber() (called by this method)
[System.Security.SecuritySafeCritical]  // auto-generated
private unsafe static void StringToNumber(String str, NumberStyles options, ref NumberBuffer number, NumberFormatInfo info, Boolean parseDecimal) {

        if (str == null) {
            throw new ArgumentNullException("String");
        }
        Contract.EndContractBlock();
        Contract.Assert(info != null, "");
        fixed (char* stringPointer = str) {
            char * p = stringPointer;
            if (!ParseNumber(ref p, options, ref number, null, info , parseDecimal) 
                || (p - stringPointer < str.Length && !TrailingZeros(str, (int)(p - stringPointer)))) {
                throw new FormatException(Environment.GetResourceString("Format_InvalidString"));
            }
        }
}

private static Boolean TrailingZeros(String s, Int32 index) {
        // For compatability, we need to allow trailing zeros at the end of a number string
        for (int i = index; i < s.Length; i++) {
            if (s[i] != '\0') {
                return false;
            }
        }
        return true;
}

1
你可以尝试解析字符串:string
var negativeStrNum = "-000005";

Console.WriteLine(int.Parse(negativeStrNum));

这会给你-5


0

int.Parse("-01").ToString() 怎么样?


0
        string InputString = "-020.50";
        for (int i = 0; i < InputString.Length; i++)
        {
            char CurrentCharacter = InputString[i];

            if (Char.IsDigit(CurrentCharacter))
            {
                if (CurrentCharacter == '0')
                {
                    InputString = InputString.Remove(i, 1);
                    i--;
                }
                else
                    break;
            }
        }
        Console.WriteLine(InputString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接