删除字符数组中的前导零

时间:2014-07-09 15:36:05

标签: c#

我试图在不使用像BigInt之类的库的情况下减去两个字符串(理论上无限长)但我想知道是否有人对如何删除角落中的前导零有任何好的想法像下面这样的案例?

    static void Main(string[] args)
    {
        Console.WriteLine(Subtract("10", "10005"));
    }


    static string ReverseInput(string inputString)
    {
        char[] charArray = inputString.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }

    static string Subtract(string firstNumInput, string secondNumInput)
    {
        string firstNum = String.Empty;
        string secondNum = String.Empty;
        bool negative = false;

        // Reverse order of string input
        if (firstNumInput.Length > secondNumInput.Length)
        {
            firstNum = ReverseInput(firstNumInput);
            secondNum = ReverseInput(secondNumInput); 
        }
        else if (firstNumInput.Length < secondNumInput.Length)
        {
            negative = true;
            firstNum = ReverseInput(secondNumInput);
            secondNum = ReverseInput(firstNumInput);
        }
        else if (firstNumInput.Length == secondNumInput.Length)
        {
            // iterate through string to find largest
        }

        char[] result = new char[firstNum.Length + 1]; 
        int resultLength = 0;
        int carry = 0;

        for (int i = 0; i < firstNum.Length; i++)
        {
            int an = (i < firstNum.Length) ? int.Parse(firstNum[i].ToString()) : 0;
            int bn = (i < secondNum.Length) ? int.Parse(secondNum[i].ToString()) : 0;

            int rn = an - bn - carry;

            if (rn < 0)
            {
                carry = 1;
                rn += 10;
            }
            else
            {
                carry = 0;
            }

            result[resultLength++] = (char)(rn + '0');
        }

        // create the result string from the char array
        string finalResult = ReverseInput(new string(result, 0, resultLength));

        if (negative)
        {
            finalResult = '-' + finalResult;
        }

        return finalResult;
    }

1 个答案:

答案 0 :(得分:2)

您在寻找TrimStart吗?

    // create the result string from the char array
    string finalResult = ReverseInput(new string(result, 0, resultLength)).TrimStart('0');