Para poder usarlo es necesario incluir:
with ada.strings.unbounded,ustrings;
use ada.strings.unbounded,ustrings;
antes del encabezamiento del programa o módulo que lo requiera. Desde ese momento, pueden declararse variables de tipo ustring (o indistintamente Unbounded_String):
nombre:ustring;
Está definida la siguiente constante de tipo ustring que representa la cadena vacía:
Null_Unbounded_String:constant Unbounded_String;
Las operaciones definidas para ustrings (o indistintamente Unbounded_String) son las siguientes.
Lectura y escritura desde/en fichero/teclado/pantalla de ustrings:
procedure Get_Line(File:in
File_Type; Item:out Unbounded_String);
procedure Get_Line(Item:out
Unbounded_String);
procedure Put(File:in File_Type;
Item:in Unbounded_String);
procedure Put(Item:in
Unbounded_String);
procedure Put_Line(File:in
File_Type; Item:in Unbounded_String);
procedure Put_Line(Item:in
Unbounded_String);
Longitud de un ustring:
function Length(Source:in Unbounded_String) return Natural;
Intercambio del valor de dos variables de tipo ustring:
procedure Swap(Left,Right:in out Unbounded_String);
Traducción entre ustring y string:
function U(Source:String) return Unbounded_String;
function S(Source:Unbounded_String) return String;
Saber si un ustring es vacío:
function Empty(S:Unbounded_String) return Boolean;
Para añadir un ustring, un string o un carácter a un ustring:
procedure Append(Source:in
out Unbounded_String;
New_Item:in Unbounded_String);
procedure Append(Source:in
out Unbounded_String;
New_Item:in String);
procedure Append(Source:in
out Unbounded_String;
New_Item:in Character);
Concatenación de ustrings con ustrings, strings y caracteres:
function "&"(Left,Right:in
Unbounded_String)
return Unbounded_String;
function "&"(Left:in
Unbounded_String; Right:in String)
return Unbounded_String;
function "&"(Left:in
String; Right:in Unbounded_String)
return Unbounded_String;
function "&"(Left:in
Unbounded_String; Right:in Character)
return Unbounded_String;
function "&"(Left:in
Character; Right:in Unbounded_String)
return Unbounded_String;
Consultar el carácter que ocupa una posición:
function Element(Source:in
Unbounded_String; Index:in Positive)
return Character;
Sustituir el carácter que ocupa una posición:
procedure Replace_Element(Source:in
out Unbounded_String;
Index:in Positive;
By:in Character);
Extraer una rebanada de un ustring:
function Slice(Source:in
Unbounded_String;
Low:in Positive;
High:in Natural)
return String;
Comparaciones entre ustrings y strings:
function "="(Left,Right:in
Unbounded_String) return Boolean;
function "="(Left:in Unbounded_String;
Right:in String) return Boolean;
function "="(Left:in String;
Right:in Unbounded_String) return Boolean;
function "<"(Left,Right:in
Unbounded_String) return Boolean;
function "<"(Left:in
Unbounded_String; Right:in String) return Boolean;
function "<"(Left:in
String; Right:in Unbounded_String) return Boolean;
function "<="(Left,Right:in
Unbounded_String) return Boolean;
function "<="(Left:in
Unbounded_String; Right:in String) return Boolean;
function "<="(Left:in
String; Right:in Unbounded_String) return Boolean;
function ">"(Left,Right:in
Unbounded_String) return Boolean;
function ">"(Left:in Unbounded_String;
Right:in String) return Boolean;
function ">"(Left:in String;
Right:in Unbounded_String) return Boolean;
function ">="(Left,Right:in
Unbounded_String) return Boolean;
function ">="(Left:in
Unbounded_String; Right:in String) return Boolean;
function ">="(Left:in
String; Right:in Unbounded_String) return Boolean;
Y muchas más (cuya utilidad puede consultarse en el Manual de Referencia), como...
Funciones de búsqueda:
function Index(Source:in
Unbounded_String;
Pattern:in String;
Going:in Direction := Forward;
Mapping:in Maps.Character_Mapping:=Maps.Identity)
return Natural;
function Index(Source:in
Unbounded_String;
Pattern:in String;
Going:in Direction:=Forward;
Mapping:in Maps.Character_Mapping_Function)
return Natural;
function Index(Source:in
Unbounded_String;
Set:in Maps.Character_Set;
Test:in Membership:=Inside;
Going:in Direction:=Forward) return Natural;
function Index_Non_Blank(Source:in
Unbounded_String;
Going:in Direction:=Forward)
return Natural;
function Count(Source:in
Unbounded_String;
Pattern:in String;
Mapping:in Maps.Character_Mapping:=Maps.Identity)
return Natural;
function Count(Source:in
Unbounded_String;
Pattern:in String;
Mapping:in Maps.Character_Mapping_Function)
return Natural;
function Count(Source:in
Unbounded_String;
Set:in Maps.Character_Set)
return Natural;
procedure Find_Token(Source:in
Unbounded_String;
Set:in Maps.Character_Set;
Test:in Membership;
First:out Positive;
Last:out Natural);
Funciones de traducción:
function Translate(Source:in
Unbounded_String;
Mapping:in Maps.Character_Mapping)
return Unbounded_String;
procedure Translate(Source:in
out Unbounded_String;
Mapping:in Maps.Character_Mapping);
function Translate(Source:in
Unbounded_String;
Mapping:in Maps.Character_Mapping_Function)
return Unbounded_String;
procedure Translate(Source:in
out Unbounded_String;
Mapping:in Maps.Character_Mapping_Function);
Funciones de transformación:
function Replace_Slice(Source:in
Unbounded_String;
Low:in Positive;
High:in Natural;
By:in String)
return Unbounded_String;
procedure Replace_Slice(Source:in
out Unbounded_String;
Low:in Positive;
High:in Natural;
By:in String);
function Insert(Source:in
Unbounded_String;
Before:in Positive;
New_Item:in String)
return Unbounded_String;
procedure Insert(Source:in
out Unbounded_String;
Before:in Positive;
New_Item:in String);
function Overwrite(Source:in
Unbounded_String;
Position:in Positive;
New_Item:in String)
return Unbounded_String;
procedure Overwrite(Source:in
out Unbounded_String;
Position:in Positive;
New_Item:in String);
function Delete(Source:in
Unbounded_String;
From:in Positive;
Through:in Natural)
return Unbounded_String;
procedure Delete(Source:in
out Unbounded_String;
From:in Positive;
Through:in Natural);
function Trim(Source:in
Unbounded_String;
Side:in Trim_End)
return Unbounded_String;
procedure Trim(Source:in
out Unbounded_String;
Side:in Trim_End);
function Trim(Source:in
Unbounded_String;
Left:in Maps.Character_Set;
Right:in Maps.Character_Set)
return Unbounded_String;
procedure Trim(Source:in
out Unbounded_String;
Left:in Maps.Character_Set;
Right:in Maps.Character_Set);
function Head(Source:in
Unbounded_String;
Count:in Natural;
Pad:in Character:=Space)
return Unbounded_String;
procedure Head(Source:in
out Unbounded_String;
Count:in Natural;
Pad:in Character:=Space);
function Tail(Source:in
Unbounded_String;
Count:in Natural;
Pad:in Character:=Space)
return Unbounded_String;
procedure Tail(Source:in
out Unbounded_String;
Count:in Natural;
Pad:in Character:=Space);
function "*"(Left:in Natural;
Right:in Character)
return Unbounded_String;
function "*"(Left:in Natural;
Right : in String)
return Unbounded_String;
function "*"(Left:in Natural;
Right:in Unbounded_String)
return Unbounded_String;