Форум: "Прочее";
Текущий архив: 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