Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
 Аватар для Deimos_
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352

Форматирование текста путем добавления пробелов

23.03.2015, 15:58. Показов 2980. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форматирование текста.
Есть текст
1234567 1009 22.03.2015 123456 123456 03 2015
1234567 1009 22.03.2015 123456 123456 03 2015
1234567 1009 22.03.2015 123456 123456 03 2015
1234567 1009 22.03.2015 123456 123456 03 2015
1234567 1009 22.03.2015 123456 123456 03 2015
нужно привести его в такой формат при нажатии кнопки btnformat.
item0 item1 item2 item3 item4 it5 it6
1234567 1009___22.03.2015 123456 123456____03 2015
1234567 1009___22.03.2015 123456 123456____03 2015
1234567 1009___22.03.2015 123456 123456____03 2015
1234567 1009___22.03.2015 123456 123456____03 2015
1234567 1009___22.03.2015 123456 123456____03 2015


т.е. после 1009 добавить еще 3 пробела и после цифр 123456(itme4) так же добавить 5 пробелов
(верхняя строка item для наглядности)
Реализация моя как я думаю - это всё из Richtextbox занести каждую строчку в массив а из массива вытаскивать их по одной.
и в String.Format({0.0}{1.0}{2.0}{3.0}{4.0}{ 5.0}{6.0},array.item0, array.item1+" ", array.item2, array.item3, array.item4+" ",array.item5,array.item6); вот таким образом редактировать как мне надо.

вот тут и встают у меня проблема, а точнее 2
1ая - это как занести каждую строчку в массив из Richtextbox(я догадываюсь что как можно использовать enter после каждой строки, как бы символ enter определят конец данной строки и надо переходить на следующую)
2ая - это как или каким циклом лучше сделать перебор строчек в String.Format что бы для каждой применялся мой заданный формат.
Пока сейчас читаю и разбираю про String.Format в msdn там много примеров и разбирать около недели надо, а может и больше.
Расписал вроде понятно прошу хотя бы намекнуть как решить эти 2 проблемы.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2015, 15:58
Ответы с готовыми решениями:

Сжатие текста путем удаления пробелов
В текстовом файле строки, состоящие из слов, разделенных пробелами в произвольном количестве. Сжатие текста состоит в том, что между...

RichEdit или RTF форматирование текста, а лучше HTML форматирование
Привет формучани. Подскажите бесплатный компонент который позволил бы выводить текст в формате RTF или HTML. Очень хорошо подходит TMS...

Форматирование строки с нормализацией пробелов
Дана текстовая строка, содержащая буквы латинского алфавита, пробелы, запятые и точки. Отформатируйте этот текст по следующим правилам: ...

3
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.03.2015, 16:13
Возможно, будет целесообразнее использовать регулярные выражения? В переменной text находится текст, где нужно провести замену.
C#
1
2
3
4
5
6
string result = null;
try {
    result = Regex.Replace(text, @"(\d{6} \d{4}) (\d{2}\.\d{2}\.\d{4} \d{6} \d{6}) (\d{2} \d{4})", "$1   $2    $3", RegexOptions.Multiline);
} catch (ArgumentException ex) {
    // Ошибка в регулярном выражении
}
2
117 / 118 / 52
Регистрация: 19.12.2014
Сообщений: 612
24.03.2015, 00:43
Лучший ответ Сообщение было отмечено Deimos_ как решение

Решение

Deimos_, можно вот так еще
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 string text=richTextBox1.Text;
            richTextBox1.Clear();
            string[] textsplit = text.Split('\n');
            foreach (string str in textsplit)
            {
                string[] strsplit = str.Split(' ');
                string item0, item1, item2, item3, item4, it5, it6;
                for(int i=0; i< strsplit.Length; i=i+7)
                {
                    item0 = strsplit[i]+" ";
                    item1 = strsplit[i+1]+" ";
                    item2 = strsplit[i+2]+" ";
                    item3 = strsplit[i+3]+" ";
                    item4 = strsplit[i+4]+" ";
                    it5 = strsplit[i+5]+" ";
                    it6 = strsplit[i+6];
                    richTextBox1.AppendText(item0 + item1+"   " + item2 + item3 + item4 + it5+"   " + it6+"\n");
                }
            }
1
 Аватар для Deimos_
39 / 38 / 32
Регистрация: 24.11.2014
Сообщений: 352
24.03.2015, 08:57  [ТС]
Спасибо всем. Как же я не догадался об этом splite. даа давно не кодил все забыл =(

Добавлено через 1 час 41 минуту
Тут появилась еше маленькая проблема которую стыдно мне тут говорить.
Я сделал вот так.
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
string Rtb = rt1.Text;
            rt1.Clear();
            char sp = '\n';
            string[] textsplit = Rtb.Split(sp);
 
            foreach (string str in textsplit)
            {
                string[] stSplit = str.Split(' ');
 
                string it0, it1, it2, it3, it4, it5, it6, it7;
 
                for (int i = 0; i < stSplit.Length; i = i + 8)
                {
                    it0 = stSplit[i] + " ";
                    it1 = stSplit[i + 1] + " ";
                    it2 = stSplit[i + 2] + " ";
                    it3 = stSplit[i + 3] + " ";
                    it4 = stSplit[i + 4] + " ";
                    it5 = stSplit[i + 5] + " ";
                    it6 = stSplit[i + 6] + " ";
                    it7 = stSplit[i + 7];
 
 
                    if (it0 == "99893")
                    {
                        rt1.AppendText(it0 + it1 + it2 + "   " + it3 + it4 + it5 + it6 + it7 + '\n');
 
                    }
                    else
                    {
                        rt1.AppendText(it0 + "   " + it1 + it2 + "   " + it3 + it4 + it5 + it6 + it7 + '\n');
                    }
                }
В конце идет условие в котором мне нужно проверить совпадает ли первый item0 с тем текстом который мне надо.
Тут мне надо сравнить если item0 == 99893 то идет один формат а в остальных случаях другой.

И вот тут вылезает что когда программа доходит до условия IF в it0 содержится string текст 99893 и с правой стороны тоже текст 99893 но программа игнорирует это условие и переходит в else.
В чём проблема если оба они string переменные и оба одинаковые ??????

Добавлено через 14 минут
Сам разобрался в чем подвох.!
Оказывается я же при создании строчки уже добавляю пробел 1
it0 = stSplit[i] + " ";
а этот пробел я не указал в условии из за этого он не хотел сверять их.=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2015, 08:57
Помогаю со студенческими работами здесь

Сжатие строки путем удаления множественных пробелов
Ввести с клавиатуры не пустую строку, которая может содержать только символы латинского алфавита и пробелы(длиной не более 100 символов)....

Получить матрицу М3 путем добавления матриц М1 и М2
Получить матрицу М3 путем добавления матриц М1 и М2. Можете помочь в строке где я искал сумму? #include &lt;stdio.h&gt; #include...

Дорисовать рисунок путем добавления двух дуг
Program lr; uses graph,crt; var graphmode, graphdriver, errorcode: integer; begin graphdriver:=detect; initgraph ( graphdriver,...

Форматирование строки путем дополнения ее символами справа и слева
Как в С# создать строку длинной допустим 20 символов со словом Hello в центре, а остальные символы заполнить '*'? На с++, думаю,...

Visual C# Express 2010: сменить форматирование отступов с пробелов на табы
Подскажите как в Visual C# Express 2010 сменить форматирование отступов с пробелов на табы ибо бесит.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru