0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 21
1

Вырезать из строки определенную часть текста

05.12.2018, 15:02. Показов 2957. Ответов 4
Метки нет (Все метки)

Доброго дня.

Такая ситуация. Имеется форма, на ней textBox, в этот textBox подгружается строчка из БД следующего вида:

(01) Иванов Иван Иванович (02) ivanov.org (39) Информация о доп. телефоне, факсе из письма в от 01.01.2018

Необходимо так обрезать эту строку, чтобы в итоге в textBox попало только ФИО, т. е. просто "Иванов Иван Иванович". Номера в скобках могут быть любые, но номер (01) всегда идет перед ФИО, т. е. еще нужно сделать проверку, если (01) отсутствует в начале строки, то ничего не выводить, а если имеется - вырезать ФИО.

Подскажите, пожалуйста, как это можно организовать. В Интернете попадается как правило только информация по обрезке строк с конца.

Добавлено через 8 минут
Еще имеется такая проблемка, что в некоторых строках (01) идет с пробелом перед ФИО, а в некоторых без пробела.

Добавлено через 6 минут
С проверкой и удалением "(01)" разобрался, примерно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
if (fio_str.Contains("(01) "))
{
fio_str = fio_str.Remove(0, 5);
}
else if (fio_str.Contains("(01)"))
{
fio_str = fio_str.Remove(0, 4);
}
else
fio_str = "";
 
fio.Text = fio_str;
Добавлено через 16 минут
Нашел ответ в данной теме: Как вырезать часть текста из документа что начинается с "qwerty" и заканчивается "qwerty1"?

Добавлено через 2 минуты
Может кому-то пригодится код:
Кликните здесь для просмотра всего текста
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
if (fio_str.Contains("(01) "))
                        {
                            //fio_str = fio_str.Remove(0, 5);
                            int start = fio_str.IndexOf("(01) ");
                            int end = fio_str.IndexOf(" (");
                            if (end > start)
                            {
                             for (int i = start + 5; i < end; i++)
                                {
                                    fio.Text += fio_str[i];
                                }       
                            }
                        }
                        else if (fio_str.Contains("(01)"))
                        {
                            //fio_str = fio_str.Remove(0, 4);
                            int start = fio_str.IndexOf("(01)");
                            int end = fio_str.IndexOf(" (");
                            if (end > start)
                            {
                                for (int i = start + 4; i < end; i++)
                                {
                                    fio.Text += fio_str[i];
                                }
                            }
                        }
                        else
                            fio_str = "";
 
                        fio.Text = fio_str;
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2018, 15:02
Ответы с готовыми решениями:

Как окрасить определенную часть текста в ListBox?
Windows Form помогите,пожалуйста( как окрасить определеную часть текста в listBox .создал я его...

Вырезать из исходной строки часть текста
Необходимо нарисовать алгоритм программы (из введенной строки выделить подстроку. Вырезать (любым...

Вырезать определенную часть из AnsiString
Есть строка в которой содержится текст: &quot;Леси Украинки бул.&quot; есть ли быстрый способ вырезать из...

Как вырезать часть текста?
Коллеги! Нужно вырезать часть текста, К примеру есть текст в базе данных то есть имеется таблица,...

4
805 / 554 / 237
Регистрация: 01.07.2018
Сообщений: 1,813
05.12.2018, 19:18 2
yarmak72, (02) Всегда после ФИО ?
0
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 21
05.12.2018, 19:35  [ТС] 3
Не, не обязательно. Там может быть любое число, а может и не быть ничего.
0
805 / 554 / 237
Регистрация: 01.07.2018
Сообщений: 1,813
05.12.2018, 21:00 4
Лучший ответ Сообщение было отмечено yarmak72 как решение

Решение

yarmak72,
C#
1
2
3
4
5
            string str = "(01) Иванов Иван Иванович (02) ivanov.org (39) Информация о доп. телефоне, факсе из письма в от 01.01.2018";
            Regex rgx = new Regex("01\\)(.\\S+\\s\\S+\\s\\S+)");
            MatchCollection matches = rgx.Matches(str);
            foreach (Match item in matches)
                Console.WriteLine(item.Groups[1].Value.Trim()); //Иванов Иван Иванович
1
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 21
06.12.2018, 07:47  [ТС] 5
Интересное решение, намного более универсальное и простое. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2018, 07:47
Помогаю со студенческими работами здесь

Как вырезать часть текста
Есть такая строка Вешалка (Орех; Орех/Бронза) как мне из неё отображать только Орех;...

Как вырезать часть текста? - PHP
Привет всем! Столкнулся с такой проблемой...Мне нужно из текста вырезать кусок текста!!! ...

Вырезать часть текста и переместить в другую ячейку
Подскажите, как вырезать часть текста и переместить в другую ячейку. Искомый текст: Иванов Иван...

Вырезать и заменить часть текста в строке Exel
Люди добрые)подскажите новичку как вырезать из строчки данные которые находятся между @ и ;;; и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru