Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.25;
Скачать: CL | DM;

Вниз

Удалить определенные символы в строке   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.009 c
15-1315315520
Palladin
2011-09-06 17:25
2011.12.25
Ассоциированные с файлом иконки в Vista и Windows 7


2-1315895287
KIR@PRO
2011-09-13 10:28
2011.12.25
TComboBox vs PStrings


2-1316153126
alexdn
2011-09-16 10:05
2011.12.25
TrackBar


2-1316110480
alexdn
2011-09-15 22:14
2011.12.25
Rave reports и edit


3-1268903413
rar
2010-03-18 12:10
2011.12.25
BLOB -> Oracle