Не получается разделить строку методом split

109
19 декабря 2020, 16:00

Необходимо записать строку в textbox со словами от 1 до 5 прописных букв, каждое слово надо разделить минимум 1 пробелом и все должно работать с KeyPressEventArgs. В итоге попробовав поставить split и вернув в textbox текст продолжает идти без пробелов. Нужна помощь в том как ограничив ввод только прописными буквами можно было мануально вставлять пробелы.

private void textBox1_KeyPress(object sender, KeyPressEventArgs check)
{
    string text = (sender as TextBox).Text;
    if (!(char.IsUpper(check.KeyChar)))
        check.KeyChar = '\0';
    else if (text.Length % 5 == 0)
    {
        string[] split = text.Split(new char[] { ' ' });
        foreach (string s in split)
        {
            textBox1.Text = s;
        }
    }
}
Answer 1

Если я правильно понимаю, то Вам надо после каждого пятого символа, если это не пробел добавлять пробел. Split немного не про то. Набросал вариант, который возможно устроит. В условии добавил проверку на пробел, если слова не обязательно по 5 символов, то его запрещать тоже не стоит. А принцип простой, ищете последний пробел, и если разница между его индексом и длиной строки больше 5, то добавляете пробел и смещаете каретку в конец. Правда этот вариант не сработает в случае внесения данных в середину текста.

    private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!(char.IsUpper(e.KeyChar))&&(e.KeyChar != ' ' ))
            e.KeyChar = '\0';
        else
        {
            int index = textBox1.Text.LastIndexOf(' ');
            if (textBox1.Text.Length - index > 5)
            {
                textBox1.Text += " ";
                textBox1.SelectionStart = textBox1.Text.Length;
            }
        }
    }
READ ALSO
Как заменить строку в List<KeyValuePair>

Как заменить строку в List<KeyValuePair>

Есть у меня словарь, в котором хранятся слова, которые надо заменять из входной строкиНа данный момент есть такой код

131
Не работает модуль &ldquo;star_rating&rdquo; на Evolution2.0, MySql5.7, PHP7.2. General error: 2014 by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute

Не работает модуль “star_rating” на Evolution2.0, MySql5.7, PHP7.2. General error: 2014 by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute

При попытке установки получил ошибку: Решил установить вручную: добавил таблицы с setupsql, в результате сам модуль просто сжирает память, на этапе...

141
MySQL и Массивы - как с ними работать?

MySQL и Массивы - как с ними работать?

Есть задание: Дан двумерный массив [[1, a], [2, b], [3, c]]Написать запрос, создающию таблицу в БД, возвращающую данный массив запросом SELECT * FROM table_name...

119