Форум: "Начинающим";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];
ВнизУдалить определенные символы в строке Найти похожие ветки
← →
dEN (2011-09-08 15:04) [0]Есть строка такого вида:
слово1 слово2 слово3 (слово4) слово5 (слово6)
Каким образом можно удалить только первую открывающую скобку и перву закрывающую, .т.е. те скобки в которых распологается слово4, а скобки в которых слово 6 - оставить? Спасибо
← →
dEN (2011-09-08 15:05) [1]Нашел в RX lib функцию DelChars но она удаляет все заданные символы в строке, а мне последние скобки нужно оставить
← →
MBo © (2011-09-08 15:06) [2]Pos + Delete
← →
pasha_golub © (2011-09-08 15:07) [3]StringReplace?
← →
Anatoly Podgoretsky © (2011-09-08 15:23) [4]В данном случае Pos + Delete эффективнее.
← →
dEN (2011-09-08 15:30) [5]Ага спасибо, с этим я разобрался. Еще вопрос:
строка вида:АхатовМаксим
Написано как видим одной строкой без пробелов. Как можно вставить пробел после фамилии?
← →
dEN (2011-09-08 15:30) [6]Удалено модератором
← →
dEN (2011-09-08 15:30) [7]Удалено модератором
← →
MBo © (2011-09-08 15:36) [8]Задать формальное правило, по которому определяется конец фамилии, и написать соотв. код для проверки, есть ли пробел, и вставки, если нужно.
← →
Ega23 © (2011-09-08 15:37) [9]
> строка вида:
>
> АхатовМаксим
>
> Написано как видим одной строкой без пробелов. Как можно
> вставить пробел после фамилии?Result := "Ахатов Максим";
А если серьёзно, то сначала формализовать задачу надо.
Что такое "Фамилия". Что такое "Имя". Что такое "Всё остальное".
И после этого уже парсить текст.
← →
Inovet © (2011-09-08 15:38) [10]> [6] dEN (08.09.11 15:30)
> строка вида:
>
> АхатовМаксим
Проверяй функцией IsUpper в вставляй пробел перед найденным.
← →
Anatoly Podgoretsky © (2011-09-08 16:25) [11]> dEN (08.09.2011 15:30:05) [5]
Ты специально не хочешь читать справку?
← →
Anatoly Podgoretsky © (2011-09-08 16:26) [12]
> Inovet © (08.09.11 15:38) [10]
Ляпис-Трубецкой
Д"Артаньян
← →
Медвежонок Пятачок © (2011-09-08 16:39) [13]Наверное так:
Ахатовмак Сим
Сим - имя, Ахматовмак - фамилия.
← →
Омлет © (2011-09-08 17:17) [14]А надо с конца искать, коли там имя.
← →
OW © (2011-09-08 17:20) [15]
> Сим - имя, Ахматовмак - фамилия.
сам виноват :)
← →
RDen © (2011-09-08 19:49) [16]ещё хуже: АхаТовМаКсИм
← →
RDen © (2011-09-08 19:54) [17]было изначально
>АхатовМаксим
откуда взялось
>OW © (08.09.11 17:20) [15]
> Сим - имя, Ахматовмак - фамилия.
?? буква "М"
запутаете ТС
← →
Дмитрий Белькевич (2011-09-08 20:26) [18]
> Написано как видим одной строкой без пробелов. Как можно
> вставить пробел после фамилии?
В общем случае - никак. В частном - искать вторую большую букву.
← →
Inovet © (2011-09-08 22:38) [19]> [12] Anatoly Podgoretsky © (08.09.11 16:26)
> Ляпис-Трубецкой
> Д"Артаньян
Предыдущий символ на IsAlpha пусть проверит. А так Ега уже сказал про формализацию.
← →
han_malign (2011-09-09 10:05) [20]ну и чего прикалываться, вполне классическая задача очеловечивания верблюда(CamelCase)...
← →
Inovet © (2011-09-09 10:10) [21]> [20] han_malign (09.09.11 10:05)
> CamelCase
СиСи - в смысле множественное число, две выпуклости.
← →
han_malign (2011-09-09 10:11) [22]
> слово1 слово2 слово3 (слово4) слово5 (слово6)
- зуб даю - препод в первую очередь вобьет((слово1) слово2) ...
← →
Inovet © (2011-09-09 10:15) [23]> [22] han_malign (09.09.11 10:11)
> препод в первую очередь вобьет ((слово1) слово2)
Тогда парсить.
← →
han_malign (2011-09-09 10:19) [24]
> СиСи
lowerCamelCase
slyFATperfidiousPROFESSOR
← →
han_malign (2011-09-09 10:35) [25]хотя с другой стороны ABet, а словарный анализ для лабы - это уже перебор...
← →
Inovet © (2011-09-09 12:02) [26]> [24] han_malign (09.09.11 10:19)
> slyFATperfidiousPROFESSOR
- Череззаборногузадерищенко?
- Я!
- Издуплаглазатаращенко?
- Я!
- НифигаСебеФамилии.
- Я!
← →
aleko © (2011-09-13 18:05) [27]Удалено модератором
Примечание: Калокод. Не стоит советовать ерунды.
← →
Servy © (2011-09-14 04:06) [28]
> [27]
Пожалуйста, не учите людей плохому.
var в процедуре лишний и потенциально сбивающий с толку (переменной List никто ничего присваивать по логике процедуры не собирается), совет про использование глобальных переменных - контрпродуктивный. Непонятно, зачем ParCode не string, это не дает "парсить" по разделителю, состоящему из более, чем одного символа. Двойной вызов Pos подряд с одинаковыми параметрами в условии цикла и внутри цикла - очевидно не оптимален. Ну про стандарты оформления кода я пожалуй умолчу, тут уж на вкус и цвет.
← →
aleko © (2011-09-14 21:00) [29]
> Непонятно, зачем ParCode не string, это не дает "парсить"
> по разделителю, состоящему из более, чем одного символа.
>
Я с Вами немного не согласен. Разбор строк с использованием разделителей больше одного(т.е. String, а не byte) на мой взгляд это частный, или академический случай. Разобрать Дж.Хедли Чейза на предложения, фразы и т.п. эта процедура вполне позволяет. Если задача требует разбор с количеством символов-определителей больше 1-го, тогда нужна другая процедура. А насчет лишней Var-не ругайте. Мобыть поторопился, не продумал
← →
Игорь Шевченко © (2011-09-14 21:20) [30]зачем изобретать TStrings.DelimitedText ?
← →
aleko © (2011-09-14 21:46) [31]
> зачем изобретать TStrings.DelimitedText ?
Здравтвуйте Игорь! Я изобретал под себя. Важно было время исполнения. Вали валом-там разберем. Кстати, я по моему не совсем ту процедуру привел, каюсь. Сейчас уточню.
← →
aleko © (2011-09-15 15:06) [32]
> совет про использование глобальных переменных - контрпродуктивный.
А как передать данные между двумя процедурами (в пределах модуля)? Ведь в списке листа оказываются те же строки, которые можно парсить хоть до одного символа. А вот насчет >1, это в АН России. У меня не стояло такой задачи.
← →
Плохиш © (2011-09-15 16:30) [33]
> А как передать данные между двумя процедурами
Это описано в любой книжке из серии "делфи за 21 секунду для полных идиотов".
← →
имя (2011-09-15 17:09) [34]Удалено модератором
← →
Jeer © (2011-09-15 17:20) [35]
> aleko © (15.09.11 17:09) [34]
Тут нет твоих врагов, тут есть советчики по делу и немного в сторону :)
Пока, что враг ты себе сам, поскольку Delphi-книжек не читаешь.
P.S.
Данные между процедурами в пределах модуля передаются через переменные модуля, между модулями - можно использовать public.переменные (свойства) модулей, либо глобалные переменные, описанные в глобальном-же модуле.
← →
Palladin © (2011-09-15 17:32) [36]
> Данные между процедурами в пределах модуля передаются через
> переменные модуля,
Не надо передавать переменные между процедурами в пределах модуля через переменные модуля. Для этого придуманы параметры у процедур которые передаются через стек.
← →
Jeer © (2011-09-15 18:06) [37]
> Для этого придуманы параметры у процедур которые передаются
> через стек.
>
Это очевидно. Я рассказал о неочевидных вариантах :)
← →
aleko © (2011-09-15 20:20) [38]Удалено модератором
← →
Inovet © (2011-09-15 20:26) [39]Удалено модератором
← →
aleko © (2011-09-15 20:37) [40]
> > Данные между процедурами в пределах модуля передаются
> через > переменные модуля,Не надо передавать переменные
> между процедурами в пределах модуля через переменные модуля.
> Для этого придуманы параметры у процедур которые передаются
> через стек.
Господа! Вы мыслите категориям, настолько отдаленными от "Начинающих". Вам нужно сделать отдельную ветку-"Для профессионалов", где Вы сможете бахвалится перед собой Вашими ДОСТИЖЕНИЯМИ!
Модератор! Выкинь меня отсюда!
С Уважением Крапивин Олег Викторович.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.004 c