![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить кусок строки
Николай © (2004-06-29 20:29:00)Есть строка: "абвгд - жзиклмн". Нужно получить вторую ее часть - после " - ". Ведь обязана быть такая функция! Искал, искал - не нашел. Поможете?
AndrewVolkov (2004-06-29 22:18:00) [1]то [6], я саму идею дал. А уж как ей воспользоваться (проверить на 0 и т.д.) - это уж личное дело того кто созидает. :)
Anatoly Podgoretsky (2004-06-29 21:55:00) [2]Ihor Osov'yak © (29.06.04 21:08) [6]
В зависимости от того, что надо делать если строка не содержит этого знака и возратить для этого случая всю строку, то тогда это не будет являться ошибкой, а вот если надо возратить пустую строку, то конечно это ошибка.
Но это не единственная проблема, возвратить по условию надо строку после "-", а не вместе с минусом.
Николай (2004-06-29 21:08:00) [3]Спасибо!
Или благодарю, как кому больше нравится :)
Ihor Osov'yak (2004-06-29 21:08:00) [4]2 [4] AndrewVolkov (29.06.04 20:44)
А у [2] - оптимальнее, функция Pos вызывается только один раз.
Но у вас обоих есть общая ошибка - не делается анализ, если Pos возвратит нуль. Конечно, в этом примере такое невозможно, но если входное значение будет меняться - почему бы и нет. Тогда в [2] эту проблему решаем относительно просто - анализ I на превышение нуля:
if (I > 0)
then
Str2 := Copy(Str1, I, Length(Str1) - I)
else
Str2 := '';
AndrewVolkov (2004-06-29 20:44:00) [5]>[2] А у меня в одну строчку :))
begin...end (2004-06-29 20:39:00) [6]
> [1] AndrewVolkov (29.06.04 20:36)
:)
begin...end (2004-06-29 20:38:00) [7]var
Str1, Str2: String;
I: Integer;
begin
Str1 := 'абвгд - жзиклмн';
I := Pos('-', Str1);
Str2 := Copy(Str1, I, Length(Str1) - I);
end.
AndrewVolkov (2004-06-29 20:36:00) [8]
Result:=Copy(FullString, Pos('-', FullString), Length(FullString)-Pos('-', FullString);,
где FullString - твоя входная строка "абвгд - жзиклмн"