Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизБуквы и цифры Найти похожие ветки
← →
F.E.V. (2003-08-16 09:28) [0]Здравствуйте!
Помогите написать процедуру отбора букв из строки,
например есть строка 587893Е234К или 8707535N986U, тесть строка может быть с любой буквой, а вот как мне из этих строк убрать буквенные символы а оставить только цифры?
Заранее спасибо!
← →
default (2003-08-16 09:37) [1]этой сложная высокоинтеллектуальная задача
решаемая только теоретически
← →
MBo (2003-08-16 09:42) [2]length, цикл for, Set, in
← →
default (2003-08-16 09:44) [3]главно тут знать что у каждого символа есть код...
← →
Юрий Зотов (2003-08-16 09:47) [4]procedure DigitsOnly(var S: string);
const
Digits = ["0".."9"];
var
i: integer;
begin
for i := Length(S) downto 1 do
if not (S[i] in Digits]) then Delete(S, i, 1)
end;
← →
F.E.V. (2003-08-16 09:48) [5]Спасибо Юрий Зотов!
то что нужно!
← →
TGrigory (2003-08-16 09:49) [6]Такое я когда-то решал: (не сложно изменить и в процедуру)
const
num = ["0".."9"];
var str: string;
res: string;
i: integer;
begin
writeln("Введите строку");
readln(str);
res := "";
for i := 1 to length(str) do
if str[i] in num then res := res + str[i];
writeln(res);
end.
← →
default (2003-08-16 09:51) [7]function DigitsOnly(const S: string): String;
var
i: integer;
begin
Result := "";
for i := Length(S) downto 1 do
if S[i] in ["0".."9"] then Result := Result + S[i]
end;
а то после каждого Delete будет копироваться часть строки правее найденной "цифры"
наверно так чуть лучше
← →
default (2003-08-16 09:52) [8]function DigitsOnly(const S: string): String;
var
i: LongWord;
begin
Result := "";
for i := 1 to Length(S) do
if S[i] in ["0".."9"] then Result := Result + S[i]
end;
так то есть
← →
Юрий Зотов (2003-08-16 10:03) [9]> default © (16.08.03 09:51) [7]
Что быстрее - передвигать хвост строки "по месту" или накапливать Result, постоянно перераспределяя память?
← →
default (2003-08-16 10:08) [10]Юрий Зотов © (16.08.03 10:03) [9]
согласен
можно заранее выделить память
потом урезать лишнее
это конечно если скорость очень критична...
← →
Юрий Зотов (2003-08-16 10:25) [11]> default © (16.08.03 10:08) [10]
> можно заранее выделить память
> потом урезать лишнее
Я не смотрел код Delete, поэтому наверняка утверждать не могу, но похоже, что мой вариант именно это и делает.
← →
F.E.V. (2003-08-16 11:50) [12]function DigitsOnly(const S: string): String;
var
i: LongWord;
begin
Result := ""; - это типа string? (выдается сообщение об ошибке)
for i := 1 to Length(S) do
if S[i] in ["0".."9"] then Result := Result + S[i]
end;
и как мне вывести полученный результат в Label
← →
Омлет (2003-08-16 13:43) [13]Ты дурак или прикидывашься?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c