Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проверка строки в Delphi Rio 10.3.2: ASCII, кириллица и диапазоны Unicode

Delphi , Синтаксис , Кодировки

Проверка строки в Delphi Rio 10.3.2: ASCII, кириллица и диапазоны Unicode

В процессе разработки программного обеспечения на языке Object Pascal в среде Delphi Rio 10.3.2 часто возникает потребность в проверке, содержат ли строки определенные символы, например, стандартные ASCII или кириллические символы. Для решения этой задачи можно использовать различные подходы, включая проверку диапазонов Unicode.

Проблема

Разработчик столкнулся с необходимостью определения, состоит ли строка только из ASCII символов, и если нет, то содержит ли она кириллические символы. Для этого он рассмотрел возможность использования диапазонов Unicode, но не был уверен в том, как это реализовать и насколько данный подход эффективен.

Решение

Для начала рассмотрим, что такое ASCII и кириллица в контексте Unicode. ASCII — это стандарт, который включает в себя коды символов от U+0000 до U+007F. Кириллические символы расположены в диапазонах U+0400—U+04FF, U+0500—U+052F, U+1C80—U+1C88, U+1D2B, U+1D78, U+2DE0—U+2DFF, U+2E43, U+A640—U+A69F, U+FE2E—U+FE2F, согласно стандарту Unicode 12.1.

Подход 1: Проверка символов по их порядковому номеру

Один из способов проверки — перебрать символы в строке и проверить их порядковый номер на принадлежность к нужному диапазону:

var
  c: char;
  str: string;
begin
  str := 'Проверяемая строка';
  for c in str do
    if InRange(Ord(c), $0020, $007F) then
      // Символ является ASCII
    else
      if InRange(Ord(c), $0400, $04FF) then
        // Символ является кириллическим
end;

Подход 2: Использование регулярных выражений

Для более сложных проверок можно использовать регулярные выражения. Например, библиотека TPerlRegEx позволяет создать функции, проверяющие строку на наличие ASCII символов или кириллицы:

function IsJustAscii(Input: string): boolean;
var
  pRegEx: TPerlRegEx;
begin
  pRegEx := TPerlRegEx.Create;
  pRegEx.RegEx := '^[\x20-\x7F]*$'; // Любое количество ASCII символов
  pRegEx.Subject := Input;
  pRegEx.Options := [poSingleLine, poMultiLine];
  Result := pRegEx.Match;
  FreeAndNil(pRegEx);
end;

function ContainsCyrillic(Input: string): boolean;
var
  pRegEx: TPerlRegEx;
begin
  pRegEx := TPerlRegEx.Create;
  pRegEx.RegEx := '[\x{0400}-\x{04FF}]+'; // Один или более кириллических символов
  pRegEx.Subject := Input;
  pRegEx.Options := [poSingleLine, poMultiLine];
  Result := pRegEx.Match;
  FreeAndNil(pRegEx);
end;

Используя эти функции, можно определить, содержит ли строка только ASCII символы или имеет ли она кириллические символы.

Вывод

Для проверки строк на наличие ASCII и кириллических символов в Delphi Rio 10.3.2 можно использовать различные методы, включая перебор символов и использование регулярных выражений. Важно учитывать актуальные диапазоны Unicode и корректно их применять в коде.

Создано по материалам из источника по ссылке.

Разработчик в среде Delphi Rio 10.3.2 ищет способы проверки строк на соответствие ASCII, кириллице и диапазонам Unicode.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Кодировки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:35:38/0.0063509941101074/1