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

Вниз

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

 
Неважно   (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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.012 c
2-1259322314
andrewtitoff
2009-11-27 14:45
2010.01.17
TrayIcon1.ShowBalloonHint


4-1226580293
DevilDevil
2008-11-13 15:44
2010.01.17
Bitmap, 8bit. Серая палитра.


2-1259253418
Molchanov
2009-11-26 19:36
2010.01.17
WndProc vs WindowProc


15-1258068949
Германн
2009-11-13 02:35
2010.01.17
Перевод с ... на всемирный


15-1258061413
Юрий
2009-11-13 00:30
2010.01.17
С днем рождения ! 13 ноября 2009 пятница