Перейти к содержанию
Fire Monkey от А до Я
  • 0

Цикл по unicode строке


x11

Вопрос

function OnlyDec(const s: String): string;
Var
 ch: char;
 i: integer;
begin
  for i := 0 to s.Length do
    if CharInSet(s[i], ['0'..'9']) then
      result := result + s[i];

или
  for i := low(s) to High(s) do
    if CharInSet(s[i], ['0'..'9']) then
      result := result + s[i];

или
  for ch in s do
    if ch in ['0'..'9'] then
      result := result + ch;

или
  for ch in s do
    if CharInSet(ch, ['0'..'9']) then
      result := result + ch;
end;

Почитал http://docwiki.embarcadero.com/RADStudio/Tokyo/en/String_Types_(Delphi) но до конца не понял.

Как всё-таки более правильно сделать цикл по строке?

Я склоняюсь к последнему варианту.

Изменено пользователем x11
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

В общем, оказалось, что "'CharInSet' is deprecated: 'Use TCharHelper functionality'"

Правильно вот так:

uses System.Character;
...
...
  for ch in s do
    if ch.IsInArray(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) then
      result := result + ch;

или "IsDigit" если нужны только цифры

  for ch in s do
    if ch.IsDigit then
      result := result + ch;

http://docwiki.embarcadero.com/Libraries/XE7/en/System.Character.IsDigit

Изменено пользователем x11
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...