我正在尝试拆分数字和字符串并将它们放在文本框中(仅限数字)
我能够做到这一点,但我只在文本框中获得Last值。它可能很简单但是因为我是C#的新手...... 所以我想要做的是在不同的文本框上获取两个值。 8 on one& 17对另一个。
string Stack = "azersdj8qsdfqzer17";
string[] digits = Regex.Split(Stack, @"\D+");
foreach (string value in digits)
{
int number;
if (int.TryParse(value, out number))
{
textoutput.Text = value.ToString();
}
}
答案 0 :(得分:4)
textoutput.Text = value.ToString();
此行将使用该值覆盖textoutput的文本值。如果您希望在一个文本框中使用所有数字:
textoutput.Text += value.ToString();
这会将下一个值添加到文本框而不是覆盖。
如果您希望数字位于不同的文本框中,则不能只将值添加到textoutput。您需要if语句或其他东西来交换用于显示数字的文本框。
答案 1 :(得分:3)
您需要将字符串分配给两个TextBox而不是循环中的一个。
string[] digits = Regex.Split(Stack, @"\D+")
.Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
textoutput1.Text = digits[0];
textoutput2.Text = digits.ElementAtOrdefault(1);
答案 2 :(得分:0)
修改textoutput.Text = value.ToString();
声明。
textoutput.Text += value.ToString(); // It will show all numbers present in string
textoutput.Text = value.ToString(); // This will only show the last number in string
您的代码中的问题是您正在为Textbox的text属性分配编号,该编号被最后一个值覆盖,因此您应该连接它以显示所有数字。
答案 3 :(得分:0)
根据评论,总有两个数字,所以不需要循环,因为你没有附加到同一个文本框。
textoutput.Text = digits[0].ToString();
secondtextoutput.Text = digits[1].ToString();
要使其为任意数量的数字,您可以遍历TextBoxes。例如,您可以在列表中添加所有TextBox。
List<TextBox> myTextBoxes = new List<TextBox>();
myTextBoxes.Add(myTB1);
myTextBoxes.Add(myTB2);
//...
然后遍历数字并在上面创建的TextBox列表中使用相同的索引。
for(int i = 0; i < digits.Length; i++)
{
myTextBoxes[i].Text = digits[i].ToString();
}
您可以添加错误处理(例如,如果TextBox的数量小于数字位数),但这将是向不同TextBox添加值的一种方法。
答案 4 :(得分:0)
现在,您有一个for循环,并且您只使用您的值设置了一个文本框。有很多方法可以解决这个问题。这是我的建议,假设您的第二个文本框名为textoutput2 :(我正在考虑Tim Schmelter的想法,即不使用TryParse,获取int,然后将其转换为字符串。)
string Stack = "azersdj8qsdfqzer17";
string[] digits = Regex.Split(Stack, @"\D+");
textoutput.Text = "replace";
textoutput2.Text = "replace";
foreach (string value in digits)
{
if (textoutput.Text == "replace") {
textoutput.Text = value;
} else {
textoutput2.Text = value;
}
}
这仍然有点糟糕,因为它设置了第一个的文本,然后对于找到的所有其他数字,它只设置第二个,但您可以轻松地将其扩展到任意数量的文本框你有,例如有3个盒子:
string Stack = "azersdj8qsdfqzer17";
string[] digits = Regex.Split(Stack, @"\D+");
textoutput.Text = "replace";
textoutput2.Text = "replace";
textoutput3.Text = "replace";
foreach (string value in digits)
{
if (textoutput.Text == "replace") {
textoutput.Text = value;
} else if (textoutput2.Text == "replace") {
textoutput2.Text = value;
} else {
textoutput3.Text = value;
}
}
还有其他方法可以实现,包括文本框数组或动态创建的文本框,但这是一个基本的开始。