|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.06.2007, 12:07 | #1 |
Регистрация: 08.06.2007
Сообщений: 6
|
Опять строки
Есть строка слов (одна строка), эта строка вводится в memo, так вот, нужно исключить из этой строки слова в которых одновременно присутствуют символы русского и латинского алфавита. Заранее спасибо.
|
14.06.2007, 12:12 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
создаешь два массива букв.
Идешь по строке, разделяя её на слова по разделителям потом проверяешь и все.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.06.2007, 12:12 | #3 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
Подсказка:
Рус-алф: 192-255 (если для ДОСа, то 128-175), где a: Char Лат-алф: 65-90 + 97-122, это ord(a), где a: Char З.Ы. Для всего остального у тебя есть, надеюсь прямые, руки! =)
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
14.06.2007, 13:08 | #4 |
Регистрация: 08.06.2007
Сообщений: 6
|
Зачем так глубоко копать ведь можно как нить
str:=memo1.text. ch:=length(str); i:=0; while i<=ch do begin if str[i]=' ' then begin for j:=0 to i-1 do begin if str[j] in ['A'..'Z','a'..'z'] then flag:=true; if flag then begin if str[j-1] in ['А'..'Я','а'..'я'] then {если это лабуда не смейтесь} Ну вот в таком напрвлении, ведь наверняка можно? У меня не получается до конца реализовать это. Выручайте. |
14.06.2007, 13:14 | #5 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Ввести неще одну переменную K, и j брать не от нуль, а от К
for j:=K to i-1 do begin ..{проверяешь условие} {и вот оно} Delete(str,k,i-1);{удаление}
Life is too short, play more...
Как правильно задавать вопросы |
14.06.2007, 17:43 | #6 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Кстати, выделять отдельные слова можно и другим способом (особенно если слов предполагается много и потом их нужно обрабатывать). Это не только к этой задаче, а вообще.
1. Заменить в строке все пробелы на запятую (заменить можно любым способом или просто хранить в таком виде) for I := 1 to <длина_строки> do if S[I] = ' ' then S[I] := ',' а потом передать строку в список SL.CommaText := S; Здесь SL переменная типа TStringList, можно вместо SL использовать свойства Memo.Lines или ListBox.Items и др. В результате в каждом элементе списка будет отдельное слово. А дальше обрабатывать список слов как хочешь. |
14.06.2007, 20:45 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,088
|
ну тогда уж писать:
for I := 1 to <длина_строки> do if (S[i] < 'A') then S[i] := #13 т.е. все символы, до латинского алфавита меняем на энтер (цифры правда тоже) |
14.06.2007, 21:00 | #8 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
А какой смысл, что дальше делать с такой строкой?
|
14.06.2007, 21:09 | #9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,088
|
ну если я не ошибаюсь, то если в свойство Text записать это, то одна строка = 1 слово, т.к. там будет символ энтера. Ну или можно так же на запятую твою менять, но просто вдруг слова отделены точкой или скобкой какой...
|
14.06.2007, 21:14 | #10 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Просто не так выразился. Я имел ввиду, что строка в таком виде будет "побитая", а вдруг там цифры и другие "убитые" символы важны?
А про то, чтоб записать в Text и получить список слов я конечно сразу понял. Собственно, вариантов разных уже достаточно. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
И опять мэйлы.. Опять... | Pusher | PHP | 6 | 28.06.2008 03:08 |
Опять автозагрузка | RealSHELS | Общие вопросы Delphi | 7 | 16.06.2008 01:32 |
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй | gotex | Помощь студентам | 4 | 08.05.2008 02:27 |
Опять Word | krem | Общие вопросы Delphi | 3 | 08.05.2007 16:27 |
Опять graph | nikleb | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 16.04.2007 22:58 |