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

Вниз

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

 
_Hawk_   (2006-05-25 12:37) [0]

Привет всем! У меня такой вопрос: имеется определенный текст – он вводится пользователем и всегда разный, но по одному принципу (например, «Note: 0100 40 68 95»), как мне сделать так, чтобы этот текст преобразовывался примерно в следующее: «Note» и «0100» удалялось, а перед «40 68 95» вставлялась буква («a») – пример: «a40 a68 a95»… Заранее весьма благодарен!


 
Kolan ©   (2006-05-25 12:43) [1]

Нужно выделить из строки слова, для этого нужно определится с разделителями(у вас это пробел). И вспользоваться тандартными ф-циями Pos, Copy, Delete.
К строке букву("40" - "а40") добовляют с помощью оператора присваивания :=.


 
_HAWK_   (2006-05-25 12:44) [2]

Kolan, а можно примерчик...


 
Desdechado ©   (2006-05-25 12:48) [3]

примерчики по F1 на указанных функциях


 
_HAWK_   (2006-05-25 12:50) [4]

> примерчики по F1 на указанных функциях
У меня с английским плоховато...


 
Kolan ©   (2006-05-25 12:52) [5]

Есть еще вариант. TStringList может разбить на слова сам:
var
 Strings: TStringList;
begin
 Strings := TStringList.Create;
 try
   Strings.Delimiter := " ";
   Strings.DelimitedText := "40 04 99";
   Memo1.Lines.AddStrings(Strings);
 finally
   Strings.Free;
 end;
end;

Добавить буквы и склеить назад в строку думаю сам сможешь.


 
Вася   (2006-05-25 12:52) [6]

а программы ты на русском пишешь?
примерчик написан на Дельфи, а не на инглише


 
_HAWK_   (2006-05-25 12:54) [7]

> а программы ты на русском пишешь?
> примерчик написан на Дельфи, а не на инглише

ну объясняется-то по F1 на инглише!


 
_HAWK_   (2006-05-25 12:56) [8]

> Strings.DelimitedText := "40 04 99";
Это заданный параметр, а как сделать, чтобы он создавался автоматически (в зависимости от введенной строки)?


 
Kolan ©   (2006-05-25 13:08) [9]

Телепатируюя :) как-то так:
Strings.DelimitedText := Edit1.Text;
Угадал?


 
_HAWK_   (2006-05-25 13:10) [10]


> Телепатируюя :) как-то так:
> Strings.DelimitedText := Edit1.Text;
> Угадал?

А че тогда делать с "Note" и "0100" (в данном случае)?


 
Andy BitOff ©   (2006-05-25 13:17) [11]


_HAWK_   (25.05.06 13:10) [10]

Послушайте, молодой человек, а Вам не кажется, что это уже наглость? Всё, что Вам надо, для решения вашей задачи, Вам было предоставленно еще в [1], а Вы хотите, чтобы за Вас всё написали.


 
API ©   (2006-05-25 13:17) [12]

_HAWK_

Вы б, молодой человек, взяли бы у папы 300 рублей, подошли бы к мало-мальски грамотному студенту, сформулировали бы задачу, получили бы решение.
Форуму - меньше трафика, участникам - меньше глупых вопросов, вам - быстрый результат, студенту - приработок.


 
wicked ©   (2006-05-25 13:18) [13]

а регекспом не судьба разобрать?.... как раз регекспы для таких штук придумали....
http://regexpstudio.com/ - качаем и наслаждаемся...


 
Desdechado ©   (2006-05-25 13:24) [14]

wicked ©   (25.05.06 13:18) [13]
если не судьба с Pos и Copy, то тем паче с регулярными выражениями


 
Kolan ©   (2006-05-25 13:27) [15]

Вотбыло у тебя:
Note: 0100 40 68 95
Возпользовавшись [5]
Ты получил список строк. Если что-то не понял, то смотри в справке:TStrings, TStringList, String. И книжку бы прочесть неплохо было(любую).

Теперь можно так:
Ко всем добавляешь твое "а" в цикле:
А затем формирушь новую строку.
Вот пример:
var
 Strings: TStringList;
 I: Integer;
 S: String;
begin
 Strings := TStringList.Create;
 try
   Strings.Delimiter := " ";
   Strings.DelimitedText := "Note: 0100 40 68 95";
   for I := 0 to Strings.Count-1 do
     Strings[I] := "a" + Strings[I];

   S := "";
   for I := 0 to Strings.Count-1 do
     if I > 2 then
       S := S + Strings[I] + " ";

   Memo1.Lines.AddStrings(Strings);
   Memo1.Lines.Add(S);
 finally
   Strings.Free;
 end;

Понятно, что 2 цикла сдесь не надо, что это:S := S + Strings[I] + " " даст лишнй пробел в конце итд, но это просто пример.. Дальше сам.


 
D5RuLeZ   (2006-05-25 14:59) [16]

Strings.Delimiter := " "; // [Error] Undeclared identifier: "Delimiter"
Strings.DelimitedText := // [Error] Undeclared identifier: "DelimitedText"

D5 В модуле Classes таких не найдено. Как быть?


 
D5RuLeZ   (2006-05-25 16:12) [17]

C таким же успехом можно использовать функции
Strings.IncreaseMyMoneyAccount : Integer
и
Strings.AddBeerInRefrigerator : Integer


 
Andy BitOff ©   (2006-05-25 16:21) [18]

Вот, Kolan взялся тебе помогать, его и жди или можешь ему поспамить, вот радость-то ему будет =)


 
Desdechado ©   (2006-05-25 16:24) [19]

эффект будет больше, если последовать совету API ©   (25.05.06 13:17) [12]
а за эти 300 рублей можно готовый код получить, на котором и поучиться заодно, если желание будет


 
Kolan ©   (2006-05-25 16:25) [20]


> D5RuLeZ   (25.05.06 14:59) [16]

Незнаю как там в Delphi 5. В топике этого неуказано. Если там этого нет, то см. [1].


>Andy BitOff ©   (25.05.06 16:21) [18]

Вроде взялся помогать _Hawk_ ...

> C таким же успехом можно использовать функции
> Strings.IncreaseMyMoneyAccount : Integer
> и
> Strings.AddBeerInRefrigerator : Integer
>

Что за бред, программа копилируется нормально. В D2006 и в D7.


 
Гарри Поттер ©   (2006-05-25 16:30) [21]

> > Strings.IncreaseMyMoneyAccount : Integer
> > и
> > Strings.AddBeerInRefrigerator : Integer
> >
> Что за бред, программа копилируется нормально. В D2006 и
> в D7.

Гы. И работает? :)


 
Kolan ©   (2006-05-25 16:39) [22]

Kolan ©   (25.05.06 13:27) [15]
Вот это работает. Сколько времени потратил(2 мин) так и работает, но работает :)


 
Desdechado ©   (2006-05-25 16:40) [23]

> AddBeerInRefrigerator
а кто-то говорил, что с английским туго



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

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

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1148265236
artiasd
2006-05-22 06:33
2006.06.18
Проблема с запуском Delphi7


15-1148402721
vrem
2006-05-23 20:45
2006.06.18
Программирование не как ремесло.


3-1145713031
Alpine
2006-04-22 17:37
2006.06.18
IB 7.01 проблемма с кодировкой.


2-1149045797
Лыган
2006-05-31 07:23
2006.06.18
Посик


2-1149146091
new_user
2006-06-01 11:14
2006.06.18
Пункт меню





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский