Member 12711085 Ответов: 4

В моем коде что-то не так с помощью split в winform


I want output is : 
hello
mynameis
lam 
But it only show "lam" in the textBox1. I don't know why. Can you help me to fix it. Thank you so much!!


Что я уже пробовал:

У меня есть этот код:
private void Form1_Load(object sender, EventArgs e)
{
    string s="hello\amynameis\alam";
    string[] arr = s.Split('\a');
    foreach (string str in arr)
    {
        textBox1.Text = str + "\n";
    }
}

4 Ответов

Рейтинг:
2

OriginalGriff

Посмотрите на свой код:

foreach (string str in arr)
    {
    textBox1.Text = str + "\n";
    }

Каждый раз в цикле вы перезаписываете содержимое текстового поля текущей строкой, отбрасывая все предыдущие данные.
Вы могли бы попробовать:
foreach (string str in arr)
    {
    textBox1.Text += str + "\n";
    }
Но он будет игнорировать новую строку.
Если это многострочное текстовое поле, то вам лучше сделать это:
foreach (string str in arr)
    {
    textBox1.AppendText(str + "\n" );
    }


Рейтинг:
1

Ralf Meier

Попробуйте это с помощью :

private void Form1_Load(object sender, EventArgs e)
{
string s="hello\amynameis\alam";
string[] arr = s.Split('\a');
foreach (string str in arr)
{
textBox1.Text += str + "\n"; 
}
} 


Member 12711085

Спасибо вам за помощь. Но это только связывает струны вместе, вот так: "hellomynameislam". Это не вход.
Мне помог один человек. Вы можете видеть:
общественности частичного класс form1 : форма
{
открытый form1()
{
метод InitializeComponent();
}

частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
строка s= " hello\amynameis\alam";
текстовое поле textbox1.Текст = С. Заменить("\а", среда.Строки);
}
}

Ralf Meier

Да ... конечно. Ваше (новое) решение намного проще (и тоже хорошая идея).
Тем не менее-мое решение, а также 2 других решения вашего вопроса основаны на вашем оригинальном коде.
Мое мнение состояло в том, чтобы сделать ваш собственный фрагмент кода функциональным ...

Рейтинг:
1

Patrice T

Если бы вы только использовали отладчик, вы бы увидели, что каждый раз заменяете содержимое вашего текстового поля.

-----------------
Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

manu_dhobale

Это будет работать как для обычного, так и для многострочного текстового поля.

string s = "hello\amynameis\alam";
string[] arr = s.Split('\a');
textBox1.Text = string.Join(" "+Environment.NewLine, arr);