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

Вниз

Как разбить текст на строки?   Найти похожие ветки 

 
ekto ©   (2008-07-11 13:11) [0]

Есть текст: (х А х А х......)

 где:  х - любая последовательность слов
        А - искомая последовательность слов (хранятся в БД).

 Нужно разбить текст на строки вида: (х А х)
                                                    (А х)
                                                    ... ,
 т.е. находится нужная фраза и все последующие слова до следующей, формируется строка  и т.д.


 
Dennis I. Komarov ©   (2008-07-11 13:12) [1]

POS + F1 Спасет отца русской демократии...


 
ekto ©   (2008-07-11 13:19) [2]


> Dennis I. Komarov ©   (11.07.08 13:12) [1]


Забыл добавить "по-быстрее".

есть набор данных( в котором искомые фразы). Ну и как, по твоему должен выглядеть код?
while not q.Eof do
begin
 MyPos := Pos(q.FieldByName("n").AsString, tmpText);
 if  MyPos <> 0 then
 begin
   StrArr[i] := ...
   Inc(i)
...
end;

а, если в StrArr[i], окажется пропущенная фраза?


 
Ega23 ©   (2008-07-11 13:22) [3]


> POS + F1 Спасет отца русской демократии...

И + COPY


 
Dennis I. Komarov ©   (2008-07-11 13:23) [4]

> [2] ekto ©   (11.07.08 13:19)

Бред какой...
Ищи где надо разбить и вставляй #$13 #$10. Токма я не понял где результат хранить...


 
ekto ©   (2008-07-11 13:29) [5]


> Dennis I. Komarov ©   (11.07.08 13:23) [4]


 да, точно, протормозил. а где хранить - не важно


 
Dennis I. Komarov ©   (2008-07-11 13:30) [6]

> а где хранить - не важно

Очень даже важно, в виду упомянутой тобой БД...


 
ekto ©   (2008-07-11 13:41) [7]


> Dennis I. Komarov ©   (11.07.08 13:30) [6]


while not q.Eof do
begin
MyPos := Pos(q.FieldByName("n").AsString, tmpText);
if  MyPos <> 0 then
begin
  tmpText := Copy(tmpText, 1, MyPos - 1) + #13#10 + Copy(tmpText, MyPos, Length(tmpText) );
 
...

 StringList.Text := tmpText;
end;


 
Поросенок Винни-Пух ©   (2008-07-11 13:41) [8]

Ищи где надо разбить и вставляй #$13 #$10.

Это неправильно.
Так на строки не разбить


 
Dennis I. Komarov ©   (2008-07-11 13:50) [9]

> [7] ekto ©   (11.07.08 13:41)

with TStringList.Create ... do begin
 Text:=q.FieldByName("n").AsString;

 ...  дальше сам
 Free;
end;


> [8] Поросенок Винни-Пух ©   (11.07.08 13:41)


Это смотря где и чего надо автору. ИМХО ему достаточно...


 
oldman ©   (2008-07-11 13:52) [10]

Кстати, а зачем искомая последовательнось хранится в БД?
Судя по задаче, она единственная. Или нет?
Если нет, что на выходе? N результатов разбивки текста?

Ничего не понимаю ©


 
ekto ©   (2008-07-11 13:53) [11]


> oldman ©   (11.07.08 13:52) [10]


> Кстати, а зачем искомая последовательнось хранится в БД?
>
> Судя по задаче, она единственная. Или нет?

пока порядка тысячи, потом будет больше.


> Если нет, что на выходе? N результатов разбивки текста?

дальше обрабатывать


 
han_malign ©   (2008-07-11 13:59) [12]


> Поросенок Винни-Пух ©   (11.07.08 13:41) [8]

- "Это какие-то неправильыне пчелы."©...
#$13 - Carriage Return - Возврат Каретки
#$10 - Line Feed - Перевод Строки


 
Поросенок Винни-Пух ©   (2008-07-11 14:00) [13]

Ой , а я то и не в кусре. И шо?
Они как-то "разбивают" строку?


 
ekto ©   (2008-07-11 14:02) [14]


> Поросенок Винни-Пух ©   (11.07.08 14:00) [13]


> Они как-то "разбивают" строку?

на мелкие кусочки)


 
Поросенок Винни-Пух ©   (2008-07-11 14:03) [15]

#$10 - Line Feed - Перевод Строки

Вот если бы Разбиватель строки, тогда да. Согласен.


 
Dennis I. Komarov ©   (2008-07-11 14:07) [16]


> [14] ekto ©   (11.07.08 14:02)

#$13 можешь не ставить... Кусочки будут еще мельче :)


 
Anatoly Podgoretsky ©   (2008-07-11 14:39) [17]

> Поросенок Винни-Пух  (11.07.2008 14:00:13)  [13]

В пух и прах. Вопрос только в том, что для автора строка и что он будет делать в следующий раз.


 
ekto ©   (2008-07-11 14:40) [18]


> Anatoly Podgoretsky ©   (11.07.08 14:39) [17]


> что он будет делать в следующий раз.

т.е.?


 
Anatoly Podgoretsky ©   (2008-07-11 15:08) [19]

> ekto  (11.07.2008 14:40:18)  [18]

А что разфе эта операция будет только один раз запускаться?


 
Dennis I. Komarov ©   (2008-07-11 15:15) [20]

> [19] Anatoly Podgoretsky ©   (11.07.08 15:08)

Он все равно никому ничего не скажет. Это секрет...


 
ekto ©   (2008-07-11 15:30) [21]


> Anatoly Podgoretsky ©   (11.07.08 15:08) [19]

нет, не единожды.


 
Anatoly Podgoretsky ©   (2008-07-11 15:32) [22]

> Dennis I. Komarov  (11.07.2008 15:15:20)  [20]

Сообственно я особо на это и не расчитываю, но буду удивлен, если он все таки все расскажет.


 
ekto ©   (2008-07-11 15:45) [23]


> Anatoly Podgoretsky ©   (11.07.08 15:32) [22]

я расскажу, честно-честно. Но, только после того, как Вы мне объясните суть вопроса. Ну не понял я, что Вас тут интересует: что он будет делать вследующий раз.! С чем делать? Конкретно непонятно, чем отличается первый раз от следующего?

и еще... сбился я с бестолку совсем. С самого начала. Pos мне не подходит. Мне нужно полное совпадение слов/фраз.

str :=  авав сб ро лоыоыв сблг сб ропро длж;
substr := "сб";
...
Result := "авав сб ро лоыоыв сблг " + #13#10 + "сб про длж";

Как сделать, проверять каждый раз, стоят ли на концах найденной подстроки пробелы?


 
Поросенок Винни-Пух ©   (2008-07-11 15:52) [24]

регулар експешшионз


 
ekto ©   (2008-07-11 15:53) [25]


> Поросенок Винни-Пух ©   (11.07.08 15:52) [24]

весьма и весьма сумневаюсь, что тут они будут кстати. Шаблоны зае... писать. Много их. И могут добавляться в процессе пользования прогой.


 
Dennis I. Komarov ©   (2008-07-11 16:00) [26]

> [23] ekto ©   (11.07.08 15:45)

Нафига все это надо, и где чего куда подробно...


 
Поросенок Винни-Пух ©   (2008-07-11 16:01) [27]

И могут добавляться в процессе пользования прогой.

Вот как раз в этом RE и удобны.
Так как без них ты модифицируешь алгоритм программы, а с ними только сами выражения, лежащие в файле


 
Поросенок Винни-Пух ©   (2008-07-11 16:03) [28]

Нравятся мне такие перцы.
Сначала ответь им про несколько возможных вариантов решения, потом поуговаривай, потом кашей накорми и еще спать положи.


 
Поросенок Винни-Пух ©   (2008-07-11 16:06) [29]

Как сделать, проверять каждый раз, стоят ли на концах найденной подстроки пробелы?

Проверяй через раз. Чтобы не устать.


 
ekto ©   (2008-07-11 16:11) [30]


> Поросенок Винни-Пух ©   (11.07.08 16:03) [28]

А как прикажешь спрашивать? Не, ну могу, канеш, сказать что мне надо, а вы мне все напишите(если не пошлете), но чет так не очень хочется. А ваще да... мозгое... я еще тот... :)


> Так как без них ты модифицируешь алгоритм программы,

нафик мне его модифицировать? Все лежит в БД. Беру строку и смарю, та иль нет. Ну проще мне так. Точнее, делаю так, как могу.


 
Поросенок Винни-Пух ©   (2008-07-11 16:12) [31]

нафик мне его модифицировать?

Много их. И могут добавляться в процессе пользования прогой.


 
ekto ©   (2008-07-11 16:13) [32]


> Поросенок Винни-Пух ©   (11.07.08 16:12) [31]


> Все лежит в БД.


 
Поросенок Винни-Пух ©   (2008-07-11 16:14) [33]

если алгоритм поиска границ не меняется, то с какого перепугу вдруг потребуется добавлять новые регулярные выражения?!


 
Поросенок Винни-Пух ©   (2008-07-11 16:15) [34]

> Все лежит в БД.

Да хоть в морге на третьей полке.


 
ekto ©   (2008-07-11 16:15) [35]

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


 
Поросенок Винни-Пух ©   (2008-07-11 16:17) [36]

> Все лежит в БД.

Ты со строкой работаешь. А где она до этого лежала или стояла - как-то фиолетово.

Или в седьмом классе ты покупал чернила для седьмого класса?


 
b z   (2008-07-11 16:20) [37]


> А то взять, да и приобрести метелочку?
Это выход.


 
Dennis I. Komarov ©   (2008-07-11 16:23) [38]

> [35] ekto ©   (11.07.08 16:15)

Ты кетмара где то встретил? :)


 
ekto ©   (2008-07-11 16:26) [39]


> Поросенок Винни-Пух ©   (11.07.08 16:17) [36]

так, если я правильно понял. Делается это сл. обр.: берется строка, делается для нее шаблон поиска и т.д. Так?


 
ekto ©   (2008-07-11 16:27) [40]


> Dennis I. Komarov ©   (11.07.08 16:23) [38]

О, с удовольствием бы, но увы, подозреваю, он зело занят созданием теории неомизантропии.



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

Текущий архив: 2008.08.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.02 c
2-1216036098
small
2008-07-14 15:48
2008.08.17
локальная сеть


2-1216092785
Гость
2008-07-15 07:33
2008.08.17
Событие OnClick


11-1190911322
saturnsuper
2007-09-27 20:42
2008.08.17
Proxies.dcu


2-1216129936
blazerad
2008-07-15 17:52
2008.08.17
Сделать окно поверх всех окон


15-1214636002
Kolan
2008-06-28 10:53
2008.08.17
Все отстрелялся, теперь я учёный! :)