我有一个问题,我似乎没有把它弄好,有没有办法从文本框中写一个较大的单个数字?
例如,我在文本框中输入数字123456789
,我希望将所有这些数字包含在9个不同的大数字上,比方说,就像这样:
int firstNumber;
int secondNumber;
int thirdNumber;
int fourthNumber;
int fifthNumber;
int sixNumber;
int seventhNumber;
int eighthNumber;
int ninethNumber;
是否有TextBox属性来执行此操作,还是必须为其编写算法?
答案 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()
;
有......正如他们所说的......从这里到达那里的方法不止一种。