![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Есть: Edit1, значение которого - "asdqwerty (рандомное число от 0 до 300)" Нужно: Убрать значение в скобках из Edit`а, чтобы в итоге получилось - "asdqwerty". Проблемы: Значение может быть (0), ... ,(10), ..., (100), ..., (300), то есть удалять кол-во символов не вариант, так как оно может меняться. |
|
#2
|
|||
|
|||
|
Код:
function KillTrailingDigits(S: string): string;
var
i, idx: Integer;
begin
idx := 0;
for i := Length(s) downto 1 do
if s[i] in ['0'..'9'] then
Inc(idx)
else
Break;
Result := Copy(s, 1, Length(s) - idx));
end;Последний раз редактировалось phomm, 17.07.2014 в 15:38. |
|
#3
|
|||
|
|||
|
Цитата:
Пример значения - "aklsdjakls(312)". Скобки! |
|
#4
|
|||
|
|||
|
Конечно не работает. Код даётся не для копипасты, а для вдумчивого изучния и поиска зерна. Лично я не понял что скобки именно присутствуют в строке, я думал, вы так указываете их обособленность от остальной строки.
Направление для исправления кода - исправить подсчёт символов для удаления, для чего помимо цифр использовать и скобки, где цифры проверяются, видите ? Вот там же и скобки добавить. |
|
#5
|
||||
|
||||
|
Код:
function ptg(ds:string):string;
var
i: integer;
begin
for i := 1 to Length(ds) do
if ds[i] <> '(' then Result:= Result + ds[i] else Exit;
end; |
|
#6
|
|||
|
|||
|
Я правильно понимаю, нужно копировать текст до первой открывающейся скобки?
Код:
s:=Copy(s, 1, Pos('(',s)); |
| Этот пользователь сказал Спасибо x128 за это полезное сообщение: | ||
Denisonin (22.07.2014)
| ||
|
#7
|
||||
|
||||
|
Сделай конечный автомат.
|
|
#8
|
||||
|
||||
|
Ищем открывающуюся скобку (Pos). Ищем закрывающуюся скобку (Pos/PosEx). Удаляем кусок строки по полученным индексам.
Если же после скобок ничего быть не может - то как сказал x128. |