|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.02.2015, 19:46 | #1 |
Пользователь
Регистрация: 23.03.2012
Сообщений: 56
|
Удаление части строки.
Доброго времени суток форумчане, собственно сабж. Имеется строка из которой необходимо удалить кусок. Удаление куска текста ограниченного определенными символами я решил вот так:
Код:
|
06.02.2015, 20:18 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
strchr меняете на strstr, в memmove second_bracket + 1 меняете на second_bracket + strlen(second_bracket) и пересчет длины чуток подправить нужно.
ЗЫ. Код неправильно отработает строку "ssss><cut>Hello World" Как вариант: second_bracket искать не в textbuffer, а в first_bracket (предварительно проверив конечно, что он не NULL) second_bracket = strchr(first_bracket, '>'); |
06.02.2015, 20:39 | #3 |
Пользователь
Регистрация: 23.03.2012
Сообщений: 56
|
Большое спасибо, то что код неправильно отработает строку, это не страшно, ибо я удаляю html теги, а там где есть "<" всегда будет ">". Не могли бы вы помочь с пересчетом длинны?
|
06.02.2015, 21:03 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
вроде так:
Код:
|
06.02.2015, 21:19 | #5 |
Пользователь
Регистрация: 23.03.2012
Сообщений: 56
|
Опробовал вашу поправку, к сожалению не работает, не удаляет то что нужно, зато с лихвой рубит почти все, оставляя только начало строки.
Дело в том, что strstr ищет первое вхождение, а в исходном тексте второе ограничительное слово может встретиться раньше первого, как это можно решить? Т.е что бы strstr учитывало только то, что идет после 1 ограничительного слова. Последний раз редактировалось Stilet; 06.02.2015 в 21:58. |
06.02.2015, 21:51 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
вторую строку искать в том, что осталось:
second_bracket = strstr(first_bracket, "parampampam"); или даже second_bracket = strstr(first_bracket + strlen(first_bracket), "parampampam"); По переносу попробуйте так: memmove(first_bracket, second_bracket + strlen(second_bracket), strlen(second_bracket)-strlen("parampampam")+1); соответственно "parampampam" нужно заменить на завершающую строку, которая вместо символа > из первоначального варианта. |
06.02.2015, 22:18 | #7 |
Пользователь
Регистрация: 23.03.2012
Сообщений: 56
|
Вроде разобрался, и еще, что бы не создавать отдельную тему. Как в тексте можно заменить на пробелы?
|
07.02.2015, 21:03 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Заменить никак. & можно на пробел заменить, а дальше так же остаток строки смещать через memmove чтобы затереть оставшиеся nbsp;
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление части строки | Vladislavv | Помощь студентам | 1 | 23.09.2014 01:25 |
Удаление части текста из ячейки. | ydirect | Microsoft Office Excel | 1 | 27.06.2014 23:15 |
Удаление части строки после символа | leus2009 | Microsoft Office Excel | 3 | 11.05.2014 02:02 |
Удаление части строк в memo | igabenu | Помощь студентам | 3 | 17.10.2012 17:47 |
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. | Александе еть я | Общие вопросы C/C++ | 5 | 13.04.2010 20:54 |