Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];

Вниз

кол-во подстрок в строке   Найти похожие ветки 

 
Неважно   (2009-11-27 17:39) [0]

ДД.
Есть строка 01hello word01

Необходимо посчитать сколько "подстрок" 01 было в строке.
Есть что-нибудь из 1 команды или только циклом с PosEx ?

Спасибо


 
Юрий Зотов ©   (2009-11-27 18:05) [1]

> Есть что-нибудь из 1 команды или только циклом с PosEx?

В стандарте - нет такого. Возможно, есть где-нибудь в сторонних библиотеках, только быстрее и проще сделать цикл с PosEx.


 
clickmaker ©   (2009-11-27 18:06) [2]

> Есть что-нибудь из 1 команды

"циклом с PosEx - марш!"


 
sniknik ©   (2009-11-27 18:18) [3]

> быстрее и проще сделать цикл с PosEx.
а без дурацкого ограничения, на - ""только циклом с PosEx" или 1й командой", было бы еще проще.


 
Sha ©   (2009-11-27 21:52) [4]

> Есть что-нибудь из 1 команды

Конечно :)

 Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));


 
Игорь Шевченко ©   (2009-11-27 21:56) [5]

Sha ©   (27.11.09 21:52) [4]

Хитро :)
Моей первой мыслью было, что ты убираешь подстроки и вычисляешь, насколько изменилась длина. Тут же смутило отсутствие деления. Пригляделся - совершенно иначе. Хитро, спасибо за науку.


 
Sha ©   (2009-11-27 21:57) [6]

Блин, забыл ник поменять, хотел запостить под ником "Ненужно".


 
Sha ©   (2009-11-27 22:04) [7]

> Игорь Шевченко
> Хитро :)

Да, но трюкачество все это.
В реальной программе такого никогда не написал бы.


 
DVM ©   (2009-11-27 22:09) [8]


>  Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.
> Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));
>

Хитро, но я несколько минут смотрел на это силясь понять что оно делает. :)


 
Игорь Шевченко ©   (2009-11-27 23:00) [9]


> Да, но трюкачество все это.


И трюкачество на что-нибудь полезно - если есть лимит по размеру кода, например, или еще какие лимиты.


 
Ухарь   (2009-11-27 23:23) [10]

Недостаток языка это :-(
когда такие вещи сложно сделать в одну строчку


 
korneley ©   (2009-11-28 02:54) [11]


> Ухарь   (27.11.09 23:23) [10]
> Недостаток языка это :-(когда такие вещи сложно сделать
> в одну строчку

Не вопрос. Надо просто придумать язык (и создать для него IDE), в котором будет оператор СколькоПодстрокВСтроке() Причём кол-во параметров варьируется. Займитесь на досуге. Ухарь.


 
korneley ©   (2009-11-28 03:00) [12]


> Sha ©   (27.11.09 21:52) [4]

:))) Сильно и стильно. Но [7] - правильно.


 
Ухарь   (2009-11-28 11:39) [13]


> korneley ©   (28.11.09 02:54) [11]
>
>
> > Ухарь   (27.11.09 23:23) [10]
> > Недостаток языка это :-(когда такие вещи сложно сделать
> > в одну строчку
>
> Не вопрос. Надо просто придумать язык (и создать для него
> IDE), в котором будет оператор СколькоПодстрокВСтроке()
> Причём кол-во параметров варьируется. Займитесь на досуге.
>  Ухарь.
>


Все уже давно придумано, и если бы Вы интересовались темой, были бы в курсе.


 
korneley ©   (2009-11-28 12:34) [14]


> Ухарь   (28.11.09 11:39) [13]
> Все  уже давно придумано, и если бы Вы интересовались темой,
> были бы в курсе.

Как это напоминает "Всё уже украдено до нас" :) И тема разобрана по частям ещё в прошлом веке. Дональд Кнут. "Искусство программирования." Том третий.


 
_   (2009-11-28 13:23) [15]


> В реальной программе такого никогда не написал бы.


Почему?


 
Ухарь   (2009-11-28 15:04) [16]


> korneley ©   (28.11.09 12:34) [14]


Я про громоздкость синтаксиса  паскале, если что.
В частности, синтаксиса циклов


 
DVM ©   (2009-11-28 15:52) [17]


> Ухарь   (28.11.09 15:04) [16]

Ну ты не обобщая, более "громозок" чем например в си только цикл for
Но в чем громоздкость

while () do

или

repeat
until ()


 
Юрий Зотов ©   (2009-11-28 18:56) [18]

> Ухарь   (28.11.09 15:04) [16]

> Я про громоздкость синтаксиса  паскале, если что.
> В частности, синтаксиса циклов

А в чем же громоздкость-то?


 
Не занят   (2009-11-28 20:55) [19]


> _   (28.11.09 13:23) [15]
>
>
> > В реальной программе такого никогда не написал бы.
>
>
> Почему?


Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler


 
Ухарь   (2009-11-28 21:21) [20]


> DVM ©   (28.11.09 15:52) [17]


> Юрий Зотов ©   (28.11.09 18:56) [18]


Громоздкость например в том, что я не могу объявить переменную прямо по месту - например внутри цикла. И в том, что я обязан описывать ее тип, хотя во многих случаях компилятор мог бы сам это понять. И в многочисленых begin end;


> Не занят   (28.11.09 20:55) [19]
>
>
> > _   (28.11.09 13:23) [15]
> >
> >
> > > В реальной программе такого никогда не написал бы.
> >
> >
> > Почему?
>
>
> Any fool can write code that a computer can understand.
> Good programmers write code that humans can understand.
> Martin Fowler


Дело не в этом.
Пример понятен, но он работает неоптимально. Это по сути трюк


 
@!!ex ©   (2009-11-28 21:32) [21]

> [20] Ухарь   (28.11.09 21:21)
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять. И в многочисленых begin end;

Это дело вкуса.
По мне так почти все перечисленное - скорее минусы.
Пожалуй соглашусь только с тем, что объявление инкремента внутри цикла был бы удобнее.


 
DVM ©   (2009-11-28 21:35) [22]


> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять.

И слава богу, что это так. Меньше шансов допустить ошибку.


> И в многочисленых begin end;

Ну { и } разве что покороче, но их количество не меньше.


 
_   (2009-11-28 22:08) [23]


> Не занят   (28.11.09 20:55) [19]


На АСМе же пишут и ни чО. ;)


 
Юрий Зотов ©   (2009-11-28 22:23) [24]

> Ухарь   (28.11.09 21:21) [20]

> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла.

Где бы переменная ни объявлялась, ее объявление все равно присутствует, и поэтому громоздкость кода одинакова. И гораздо удобнее, когда все объявления сосредоточены в одном месте, а не разбросаны по коду.

А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).  

> И в том, что я обязан описывать ее тип, хотя во многих случаях
> компилятор мог бы сам это понять.

Похоже, Вам просто не приходилось писать (и, главное, отлаживать) программы на языках, в которых существуют дефолтные объявления переменных. Иначе отсутствие таких объявлений Вы бы назвали не недостатком, а очень большим достоинством. Как и строгую типизированность.

> И в многочисленых begin end;

Чем оно хуже столь же многочисленных {} - совершенно непонятно. Блок есть блок на любом языке - и на любом языке его начало и конец должны быть как-то обозначены. В этом смысле begin-end даже лучше, чем {} - потому что заметнее и поэтому делают код более читабельным.

====================

К вопросу о громоздкости - просто убивает огромное количество лишних скобок в java. Читабельность кода резко снижается. Например:

1. Вызов функции без параметров. Компилятор и так знает, что вызывается функция, и что она без параметров - так на фига же ему еще () нужны?

2. if (логическое_выражение) оператор;
На фига логическое выражение заключать в скобки? Синтаксис и без них однозначен.

3. try {...} catch {...} finally {...};
Во всех секциях {} - лишние. Синтаксис однозначен и без них.

и т.п.

======================

Моя любимая фича из серии "на фига нам такая краткость?".

public int sum(int x, int y) {
 return x + y;
}

public int func() {
 int i = 1;
 return func(i, i++);
}

Вопрос - что вернет func?

Как только на него ответите, так тут же и поймете, что сокращения типа ++ или -- более вредны, нежели полезны. Гораздо лучше написать "громоздкое" i := i + 1, но с абсолютно предсказуемым результатом.


 
Юрий Зотов ©   (2009-11-28 22:26) [25]

Опечатка: конечно, return sum, а не return func.


 
Не занят   (2009-11-28 22:28) [26]


> Дело не в этом.
> Пример понятен, но он работает неоптимально. Это по сути
> трюк


С неоптимально не спорю. Но не хотелось бы встречаться с таким "понятным" кодом в работе. Вот тоже неоптимальный, но мне  такой намного понятнее.

Result := 0;

function CountOf...
while Pos(subStr, str) > 0 do
begin
Inc(Result);
Replace(str, subStr, "");
end;
// sorri за мой Delphi...


 
Не занят   (2009-11-28 22:32) [27]


> _   (28.11.09 22:08) [23]
>
>
> > Не занят   (28.11.09 20:55) [19]
>
>
> На АСМе же пишут и ни чО. ;)
>


Delphi не для этого...


 
Не занят   (2009-11-28 22:41) [28]


> 1. Вызов функции без параметров. Компилятор и так знает,
>  что вызывается функция, и что она без параметров - так
> на фига же ему еще () нужны?
>


А я не знаю, я хочу читать код и сразу видеть что ShowModal() это вызов метода, показывающего форму, а не просто проверка свойства ПоказыватьКогдаНибудьПотомМодально.


 
DVM ©   (2009-11-28 22:43) [29]


> 2. if (логическое_выражение) оператор;
> На фига логическое выражение заключать в скобки?

тоже всегда интересовало, зачем так.


 
Anatoly Podgoretsky ©   (2009-11-29 00:21) [30]


> К вопросу о громоздкости - просто убивает огромное количество
> лишних скобок в java. Читабельность кода резко снижается.
>  Например:

Аполитично рассуждаешь, это не для программиста, а для языка и производно для компилятора строителя. Им так легче было строить, а программисты - лишнее, паразитическое звено.


 
korneley ©   (2009-11-29 03:11) [31]


> Anatoly Podgoretsky ©   (29.11.09 00:21) [30]
> ...а программисты - лишнее, паразитическое звено.

Эт, точно... (с) тов. Сухов. Нафига они (программисты) вообще нужны? Только проблемы создают: "это не работает, тут не оптимально..." :))


 
Германн ©   (2009-11-29 03:37) [32]


> korneley ©   (29.11.09 03:11) [31]
>
>
> > Anatoly Podgoretsky ©   (29.11.09 00:21) [30]
> > ...а программисты - лишнее, паразитическое звено.
>
> Эт, точно... (с) тов. Сухов. Нафига они (программисты) вообще
> нужны? Только проблемы создают: "это не работает, тут не
> оптимально..." :))

Уж как я с этим согласен! Ты, Михалыч, даже не подозреваешь!
:)


 
korneley ©   (2009-11-29 03:43) [33]


> Германн ©   (29.11.09 03:37) [32]

Одна беда: без работы останусь :))) Хотя можно, конечно, по методу О. Бендера переквалифицироваться в дворники. Кстати! Не знаю, что лучше...


 
korneley ©   (2009-11-29 03:51) [34]

И вообще: "Смерть эксплуататорам и программистам!" (с) И.Охлобыстин, Р.Качанов, к/ф "Даун Хаус"


 
Игорь Шевченко ©   (2009-11-29 04:04) [35]


> И гораздо удобнее, когда все объявления сосредоточены в
> одном месте, а не разбросаны по коду.


Вообще-то неудобнее, но это от Вирта пошло, за что ему долго будет икаться.
Паскаль по сравнению с С более строгий, но и более громоздкий.


 
korneley ©   (2009-11-29 04:31) [36]


> Игорь Шевченко ©   (29.11.09 04:04) [35]

Эээ, батенька ;) "Громоздкий" = "Менее удобный"? Если да, то кому? В конце концов: "Вам шашечки, или ехать?" И в Паскале с кучами  можно такого начудить, что Си за счастье будет. Вот я - за строгую типизацию и предварительное объявление переменных. Правда... "Но этот пес не чужд парадоксов: Он влюблен в этих женщин, И с его точки зренья он прав." :) По разному бывает :)))


 
korneley ©   (2009-11-29 04:38) [37]

Увлёкся, в "по-разному", дефис пропустил :(


 
Anatoly Podgoretsky ©   (2009-11-29 12:12) [38]

> korneley  (29.11.2009 03:43:33)  [33]

Конечно дворник, голова не болит и с лицензиями на инструмент просто, в любом орешнике.


 
Игорь Шевченко ©   (2009-11-29 20:44) [39]

korneley ©   (29.11.09 04:31) [36]

Просто громоздкий. Об удобстве я речь не вел, по мне так удобный, а то, что нельзя переменную по месту использования в локальном блоке объявлять - так это неудобно. Но не переписывать же из-за этого компилятор, верно ?


 
Alx2 ©   (2009-11-29 21:38) [40]

Юрий Зотов ©   (28.11.09 22:23) [24]
А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).  


Но ведь С++ и Java не требуют объявления своего счетчика для каждого цикла.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.007 c
15-1258119591
Piter
2009-11-13 16:39
2010.01.17
Кризис и преступность


3-1233310362
Konrads
2009-01-30 13:12
2010.01.17
операция деления в запросе


15-1258140062
Германн
2009-11-13 22:21
2010.01.17
Как жить сегодня с тремя устройствами IDE?


8-1173512433
Аликъ
2007-03-10 10:40
2010.01.17
Bass убрать голос из песни


2-1258963809
Oleg1963
2009-11-23 11:10
2010.01.17
Выбор каталога.Проблема c ShellTreeView.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский