Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 120

Авто-абзацы в textbox

01.07.2016, 15:08. Показов 3852. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно реализовать авто-абзацы в тексте, который мы ввели в текст бокс?

То есть: Мы вводим большой текст:

Ruby Brown, a poem written by Langston Hughes is describing a black woman that faced both racism and sexism in her life.

Like in most of his work, Langston Hughes uses motifs of color and white. Hughes characterizes Ruby in a way that allows us to see the restrictions she had in her way and her ability to mentally over come them. The visual imagery in the beginning talks about bright and golden sunshine but in actuality it was not. Like in most of his work, Langston Hughes uses motifs of color and white. Hughes characterizes Ruby in a way that allows us to see the restrictions she had in her way and her ability to mentally over come them. The visual imagery in the beginning talks about bright and golden sunshine but in actuality it was not.

The characterization of Ruby shows her to be an upright respectable person but it does not matter because she is black. Her life was

Видим что 1 и 3 абзац имеют намного меньший размер чем 2. А я хочу например сделать чтобы они были примерно одинаковые. Я так понимаю что нужно всё склеить в 1 абзац а потом разбивать.
Или же например, когда в нас вначале 1 большой абзац как его сразу разбить на множество абзацев?

Вообще не понимаю как закодить, если не сложно помогите реализовать.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2016, 15:08
Ответы с готовыми решениями:

При изменении количества в TextBox авто пересчёт в DataGridView
Всем привет. Задача такова, есть 1 TextBox, в нём указывается количество, изменив его в DataGridView в определённом столбике должен...

Авто заполнение textBox'ов из БД
Никто не подскажет как это делается? Нужно сделать, но в интернете информации по этому вопросу не нашел, решил к Вам обратиться. ...

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи типа : "Описать базовый класс...

5
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
01.07.2016, 15:39
Лучший ответ Сообщение было отмечено sergiy1912 как решение

Решение

sergiy1912, ну так нужно определиться с постановкой задачи. У тебя на вход есть предложения с разным числом символов, какой длины нужно формировать абзацы? Вариантов куча - можно сделать один большой из всех предложений, можно кучу маленьких по одному предложению. Может у тебя есть константа "оптимальное число символов в абзаце". Может ты хочешь статистически разделить исходные абзацы по правилу Стёрджеса и, например, привести все к длине 80% в средне квадратическом отклонении..
1
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 120
01.07.2016, 15:41  [ТС]
Забыл указать, извиняюсь. Да, ты абсолютно прав, у меня есть константа, в которую я ввожу нужно число символов.
0
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
02.07.2016, 02:44
sergiy1912, полным перебором получается очень медленно =) Нашел несколько алгоритмов (тут и тут). По первой ссылке последний код перевел на C# (ох уж эти for:else ) без всяких адаптаций. Сам, правда, не понял насколько он оптимальное ищет решение, но может тебе поможет, переделаешь под свои нужны.
class TextBreaker
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
sealed class TextBreaker
{
    int[] offsets, minima, breaks;
    int count, width;
    string[] words;
 
    public static string Break(int Width, string[] TextParts)
    {
        return new TextBreaker(TextParts, Width).DoWork().GetResult();
    }
 
    public static string BreakByPattern(int Width, string Text, string TextPartPattern)
    {
        return Break(Width, Regex.Matches(Text, TextPartPattern, RegexOptions.Multiline)
            .Cast<Match>().Select(m => m.Value).ToArray());
    }
 
    public static string BreakByParagpaphs(int Width, string Text)
    {
        return BreakByPattern(Width, Text, @"(?=\S).+?(?:(?=\s*$)|[.?!]+)");
    }
 
    TextBreaker(string[] Words, int Width)
    {
        width = Width;
        words = Words;
        count = words.Length;
        offsets = new int[count + 1];
        minima = new int[count + 1];
        breaks = new int[count + 1];
 
        for (int i = 0; i < count; i++)
        {
            offsets[i + 1] = offsets[i] + words[i].Length;
            minima[i + 1] = int.MaxValue;
        }
    }
 
    TextBreaker DoWork()
    {
        int n = count + 1;
        int i = 0;
        int offset = 0;
        while (true)
        {
            int r = Math.Min(n, 1 << (i + 1));
            int edge = (1 << i) + offset;
            Search(0 + offset, edge, edge, r + offset);
            int x = minima[r - 1 + offset];
            bool noBreak = true;
            for (int j = 1 << i; j < r - 1; j++)
            {
                int y = Cost(j + offset, r - 1 + offset);
                if (y <= x)
                {
                    n -= j;
                    i = 0;
                    offset += j;
                    noBreak = false; break;
                }
            }
 
            if (noBreak)
            {
                if (r == n) break;
                i = i + 1;
            }
        }
 
        return this;
    }
 
    IEnumerable<int> GetBreaks()
    {
        for (int j = count; j > 0; j = breaks[j])
            yield return j;
 
        yield return 0;
    }
 
    string GetResult()
    {
        StringBuilder sb = new StringBuilder();
        int[] breaks = GetBreaks().Reverse().ToArray();
        for (int i = 0; i < breaks.Length - 1; i++)
        {
            for (int j = breaks[i]; j < breaks[i+1]; j++)
            {
                sb.Append(words[j]);
                if (j != breaks[i + 1] - 1) sb.Append(' ');
            }
 
            if (i != breaks.Length - 2)
            {
                sb.Append(Environment.NewLine);
                sb.Append(Environment.NewLine);
            }
        }
        return sb.ToString();
    }
 
    int Cost(int i, int j)
    {
        int w = offsets[j] - offsets[i] + j - i - 1;
        if (w > width) return int.MaxValue / 2;
        return minima[i] + (width - w) * (width - w);
    }
 
    void Search(int i0, int j0, int i1, int j1)
    {
        if (j0 < j1)
        {
            int j = (j0 + j1) / 2;
            for (int i = i0; i < i1; i++)
            {
                int c = Cost(i, j);
                if (c <= minima[j])
                {
                    minima[j] = c;
                    breaks[j] = i;
                }
            }
            Search(i0, j0, breaks[j] + 1, j);
            Search(breaks[j], j + 1, i1, j1);
        }
    }
}
Пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static class Program
{
    static string Text =
        @"Ruby Brown, a poem written by Langston Hughes is describing a black woman that faced both racism and sexism in her life.
        Like in most of his work, Langston Hughes uses motifs of color and white.Hughes characterizes Ruby in a way that allows us to see the restrictions she had in her way and her ability to mentally over come them.The visual imagery in the beginning talks about bright and golden sunshine but in actuality it was not. Like in most of his work, Langston Hughes uses motifs of color and white. Hughes characterizes Ruby in a way that allows us to see the restrictions she had in her way and her ability to mentally over come them. The visual imagery in the beginning talks about bright and golden sunshine but in actuality it was not. 
 
        The characterization of Ruby shows her to be an upright respectable person but it does not matter because she is black.Her life was
        Видим что 1 и 3 абзац имеют намного меньший размер чем 2. А я хочу например сделать чтобы они были примерно одинаковые. Я так понимаю что нужно всё склеить в 1 абзац а потом разбивать. 
        Или же например, когда в нас вначале 1 большой... абзац как его сразу
 
        разбить на множество. абзацев??";
 
    static void Main()
    {
        /*Text = File.ReadAllText("p:\\text.txt");
        Text = TextBreaker.BreakByParagpaphs(300, Text);
        File.WriteAllText("p:\\text_out.txt", Text);*/
 
        Console.WriteLine(TextBreaker.BreakByParagpaphs(300, Text));
        Console.ReadKey();
    }
}
0
 Аватар для jahtemg
19 / 21 / 12
Регистрация: 24.06.2016
Сообщений: 71
02.07.2016, 03:21
Возможно, это поможет: https://www.cyberforum.ru/post9234954.html
0
1 / 1 / 0
Регистрация: 09.09.2014
Сообщений: 120
02.07.2016, 13:01  [ТС]
Aael, хм еще бы это на формы попробовать щас сделать. Хз получится ли, как что выйдет сразу отпишу

Добавлено через 7 часов 14 минут
Aael, почти всё заработало, только есть одна последняя проблема. У меня при выводе в текстовый документ, где всякие знаки типа " , ' выводит непонятные символы, можешь выправить?

Добавлено через 18 минут
Aael, спасибо, всё сделал, помог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2016, 13:01
Помогаю со студенческими работами здесь

Авто форматирование TextBox
Доброго. Помогите реализовать. Нужно что бы при появление UserForm в TextBox1,2,3,4 были надписи Фамилия, Имя, Отчество, Дата рождения....

Авто коррекция ввода даты в TextBox
Доброго Помогите реализовать. В UserForm есть TextBox в который пользователь должен ввести дату. Идея заключается в том, когда...

Авто-заполнение TextBox из текстовых файлов в VB
Прошу помощь, в моей программе есть авто-заполнение текст-боксов из текстовых файлов из файловой системы, во время каждого запуска,...

Как сделать авто-скролл для TextBox?
Подскажите как сделать авто-скролл для textbox - чтобы отображались последняя выведенная инфа в него и автоскрод за добавленой инфой. ...

Авто расстановка пробелов и тире при вводе цифр в textbox
Всем добрый день, проблема такова, имеется textbox с возможностью вводить только цифры, задача в том что бы после каждой третьей цифры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru