从较大的数字中获取个位数
Get single digits from a larger number
我有一个问题,但我似乎没答对,有没有办法从文本框上写的较大数字中获取单个数字?
例如,我在文本框中输入数字 123456789
,我想获取该大数字中包含的所有数字 9 个不同的数字,比方说整数,如下所示:
int firstNumber;
int secondNumber;
int thirdNumber;
int fourthNumber;
int fifthNumber;
int sixNumber;
int seventhNumber;
int eighthNumber;
int ninethNumber;
是否有 TextBox 属性 可以执行此操作,还是我必须为其编写算法?
您可以简单地遍历 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
string input = "123456789";
var nums =
(from i in input
select int.Parse(i.ToString())).ToList();
嗯...一个TextBox
包含文本:它有一个Text
属性那个returns一个字符串代表文本框的内容。 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()
;
有...正如他们所说...从这里到达那里的方式不止一种。
我有一个问题,但我似乎没答对,有没有办法从文本框上写的较大数字中获取单个数字?
例如,我在文本框中输入数字 123456789
,我想获取该大数字中包含的所有数字 9 个不同的数字,比方说整数,如下所示:
int firstNumber;
int secondNumber;
int thirdNumber;
int fourthNumber;
int fifthNumber;
int sixNumber;
int seventhNumber;
int eighthNumber;
int ninethNumber;
是否有 TextBox 属性 可以执行此操作,还是我必须为其编写算法?
您可以简单地遍历 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
string input = "123456789";
var nums =
(from i in input
select int.Parse(i.ToString())).ToList();
嗯...一个TextBox
包含文本:它有一个Text
属性那个returns一个字符串代表文本框的内容。 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()
;
有...正如他们所说...从这里到达那里的方式不止一种。