Index

Explicación

Index es una función cuyo cometido es encontrar una subristra en una ristra. Existen seis versiones de Index para cada uno de los tres tipos de ristras (tamaño fijo, tamaño limitado y tamaño dinámico); para utilizarlos hay que incluir las librerías que correspondan según el tipo de ristra (Ada.Strings.Fixed, Ada.Strings.Bounded, Ada.Strings.Unbounded).

Sintaxis

En lo que sigue, el tipo Ristra representa uno de los tres tipos de ristras, según corresponda.

function Index (Source  : in Ristra;
                Pattern : in String;
               [From    : in Positive;]
                Going   : in Direction := Forward;
                Mapping : in Mapa_de_Caracteres)
   return Natural;

Mapa_de_Caracteres ::=
    Maps.Character_Mapping := Maps.Identity;
  | Maps.Character_Mapping_Function
function Index (Source  : in Ristra;
                Set : in Maps.Character_Set;
               [From : in Positive;]
                Test : in Membership := Inside;
                Going : in Direction := Forward)
   return Natural;

Ejemplo

-- En Ada.Strings están definidas algunas constantes
-- como Inside, Outside y Backward.
with Ada.Strings;           use Ada.Strings
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
-- En Strings.Maps se encuentra la función To_Set() 
with Ada.Strings.Maps;      use Ada.Strings.Maps;
-- En Maps.Constants está definida la constante Lower_Set
with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants;
...

Din : Unbounded_String;
P   : Integer;
...

Din := To_Unbounded_String ("Universidad de Las Palmas de Gran Canaria");
P := Index (Din, "ver");             --  P = 4
P := Index (Din, "de");              --  P = 13
P := Index (Din, "de", 15);          --  P = 27
P := Index (Din, "de", Backward);    --  P = 27
P := Index (Din, "patata");          --  P = 0

P := Index (Din, To_Set ("aeiou"));  --  P = 3
P := Index (Din, To_Set ("aeiou"), Outside, Backward); --  P = 39