ODD和EVEN数字

时间:2014-02-07 01:50:59

标签: c#

我有一个代码捕获文本框中的ODD EVEN数字,有没有更好的方法在最小的代码中执行此操作?或者可能更快的表现? thnks -john:)

                string givenamnt = Convert.ToString(txtamount.Amount.Replace(".", ""));
                int glength = givenamnt.Length;
                var regex = new Regex("[1]|[3]|[5]|[7]|[9]");

                string odd = null;
                string even = null;

                for (int i = 0; i < glength; i++)
                {
                var x1 = givenamnt.Substring(i, 1);
                var isOdd = regex.IsMatch(x1);

                if (isOdd)
                {
                odd += x1;
                txtodd1.Text = odd;
                }
                else
                {
                even += x1;
                txteven1.Text = even;
                }
                }

2 个答案:

答案 0 :(得分:4)

是的。您可以使用Modulus

if( Convert.ToInt32(x1) % 2 == 0 ) //even
else // odd

答案 1 :(得分:0)

绝对不是一个优雅的解决方案,但要获得实际的偶数和奇数数字,你可以使用它:

    string str = "230sd85"; // sample string with invalid input for numbers
    var odd = str
            .Where(x => char.IsDigit(x)  
                && Convert.ToInt32(x) % 2 != 0);

    var even = str
             .Where(x => char.IsDigit(x) 
                && Convert.ToInt32(x) % 2 == 0);

    string oddNums = string.Join("", odd); // 35 - the numbers 3 and 5, not 35
    string evenNums = string.Join("", even); // 208 - the numbers 2, 0 and 8

这是数字的意思吗?