从较大的数字获取单个数字

时间:2015-02-11 23:31:42

标签: c# algorithm int

我有一个问题,我似乎没有把它弄好,有没有办法从文本框中写一个较大的单个数字? 例如,我在文本框中输入数字123456789,我希望将所有这些数字包含在9个不同的大数字上,比方说,就像这样:

int firstNumber;
int secondNumber;
int thirdNumber;
int fourthNumber;
int fifthNumber;
int sixNumber;
int seventhNumber;
int eighthNumber;
int ninethNumber;   

是否有TextBox属性来执行此操作,还是必须为其编写算法?

3 个答案:

答案 0 :(得分:1)

您可以简单地遍历TextBox字符串的每个字符并将其输入到int数组中。使用数组比使用单个变量要好得多。

string text = "123456789"; //Set to TextBox text
int[] numbers = new int[text.Length]; //Create array of ints
for (int i = 0; i < text.Length; i++)
{
    //Parse each character to an integer
    numbers[i] = Int32.Parse(text[i].ToString());
}

如果您不熟悉,可能需要查看this数组教程和循环。

使用此代码,您现在可以使用以下内容检索每个号码:

int firstNumber = numbers[0];
int secondNumber = numbers[1];
etc, etc

答案 1 :(得分:0)

string input = "123456789"; 

var nums = 
(from i in input
select int.Parse(i.ToString())).ToList();

答案 2 :(得分:0)

嗯...... TextBox包含 text :它有Text属性,返回表示文本框内容的字符串。 C#字符串是IEnumerable<char>:枚举字符串中的字符应该是非常简单的。给定char c,您可以通过评估c-'0'将其整数值作为十进制数字。如果结果在域0-10内,则您有一个十进制数字。

你可以这样说:

public static IEnumerable<int> TextDigits( this TextBox instance )
{
  foreach( char c in instance.Text )
  {
    int d = c - '0' ;'
    if ( d >= 0 && d <= 9 ) yield return value ;
  }
}

或类似的东西:

public static IEnumerable<int> TextDigits( this TextBox instance )
{
  int value = int.Parse(instance.Text) ;
  if ( value == 0 ) { yield return 0 ; }
  while ( value != 0 )
  {
    int d = value % 10 ;
    value /= 10 ;
    yield return d ;
  }
}

或者你可以说像

TextBox tb ;
int[] digits = tb
               .Select( c => c - '0' )
               .Where( c => c >= 0 && c <= 9 )
               .ToArray()
               ;

有......正如他们所说的......从这里到达那里的方法不止一种。