Главная страница
    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.07 c
2-1149105731
Тимофеич
2006-06-01 00:02
2006.06.18
работа с текстом


15-1148429089
_Hawk_
2006-05-24 04:04
2006.06.18
Шпион aka Trainer Spy


3-1145611175
Boojum
2006-04-21 13:19
2006.06.18
Delphi +MySQL через ADO+ODBC проблемы с залогиниванием HELP!!!


15-1148273694
Ega23
2006-05-22 08:54
2006.06.18
С Днём рождения! 22 мая (настоящее)


15-1148418317
Andy BitOff
2006-05-24 01:05
2006.06.18
Новый вирус, Уязвимость в Microsoft Word.





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