Programación en Ada/Unidades predefinidas/Ada.Strings.Fixed
Apariencia
Ada.Strings.Fixed proporciona subprogramas para la transformación y el manejo de strings de tamaño fijo.
Ejemplo
[editar]packageFechasistypeFechaisrecordDia : Positiverange1 .. 31; Mes : Positiverange1 .. 12; Año : Positiverange1 .. 3000;endrecord;subtypeString_FechaisString (1..10);-- Pasa la fecha a string en formato "dd-mm-aaaa".--functionImagen (F: Fecha)returnString_Fecha;endFechas;
withAda.Strings.Fixed;useAda.Strings.Fixed;useAda.Strings;packagebodyFechasisfunctionImagen (F: Fecha)returnString_fechaisprocedureMover_Imagen_Positive (N: Positive; S:inoutString)isbegin-- Move copia un string en otro de otro tamaño, añadiendo un-- padding opcionalmente. Trim elimina los blancos a izquierda o-- derecha (en este caso el blanco que pone el 'Image).Move (Source => Trim (Positive'Image (N), Left), Target => S, Justify => Right, Pad => '0');endMover_Imagen_Positive; S_Fecha : String_Fecha;beginMover_Imagen_Positive (F.Dia, S_Fecha (1..2)); S_Fecha (3) := '-'; Mover_Imagen_Positive (F.Mes, S_Fecha (4..5)); S_Fecha (6) := '-'; Mover_Imagen_Positive (F.Año, S_Fecha (7..10));returnS_Fecha;endImagen;endFechas;
Especificación
[editar]Según el manual de referencia, la especificación de este paquete ha de ser la siguiente:
withAda.Strings.Maps;packageAda.Strings.FixedispragmaPreelaborate(Fixed);-- "Copy" procedure for strings of possibly different lengthsprocedureMove (Source :inString; Target :outString; Drop :inTruncation := Error; Justify :inAlignment := Left; Pad :inCharacter := Space);-- Search subprogramsfunctionIndex (Source :inString; Pattern :inString; Going :inDirection := Forward; Mapping :inMaps.Character_Mapping := Maps.Identity)returnNatural;functionIndex (Source :inString; Pattern :inString; Going :inDirection := Forward; Mapping :inMaps.Character_Mapping_Function)returnNatural;functionIndex (Source :inString; Set :inMaps.Character_Set; Test :inMembership := Inside; Going :inDirection := Forward)returnNatural;functionIndex_Non_Blank (Source :inString; Going :inDirection := Forward)returnNatural;functionCount (Source :inString; Pattern :inString; Mapping :inMaps.Character_Mapping := Maps.Identity)returnNatural;functionCount (Source :inString; Pattern :inString; Mapping :inMaps.Character_Mapping_Function)returnNatural;functionCount (Source :inString; Set :inMaps.Character_Set)returnNatural;procedureFind_Token (Source :inString; Set :inMaps.Character_Set; Test :inMembership; First :outPositive; Last :outNatural);-- String translation subprogramsfunctionTranslate (Source :inString; Mapping :inMaps.Character_Mapping)returnString;procedureTranslate (Source :inoutString; Mapping :inMaps.Character_Mapping);functionTranslate (Source :inString; Mapping :inMaps.Character_Mapping_Function)returnString;procedureTranslate (Source :inoutString; Mapping :inMaps.Character_Mapping_Function);-- String transformation subprogramsfunctionReplace_Slice (Source :inString; Low :inPositive; High :inNatural; By :inString)returnString;procedureReplace_Slice (Source :inoutString; Low :inPositive; High :inNatural; By :inString; Drop :inTruncation := Error; Justify :inAlignment := Left; Pad :inCharacter := Space);functionInsert (Source :inString; Before :inPositive; New_Item :inString)returnString;procedureInsert (Source :inoutString; Before :inPositive; New_Item :inString; Drop :inTruncation := Error);functionOverwrite (Source :inString; Position :inPositive; New_Item :inString)returnString;procedureOverwrite (Source :inoutString; Position :inPositive; New_Item :inString; Drop :inTruncation := Right);functionDelete (Source :inString; From :inPositive; Through :inNatural)returnString;procedureDelete (Source :inoutString; From :inPositive; Through :inNatural; Justify :inAlignment := Left; Pad :inCharacter := Space);-- String selector subprogramsfunctionTrim (Source :inString; Side :inTrim_End)returnString;procedureTrim (Source :inoutString; Side :inTrim_End; Justify :inAlignment := Left; Pad :inCharacter := Space);functionTrim (Source :inString; Left :inMaps.Character_Set; Right :inMaps.Character_Set)returnString;procedureTrim (Source :inoutString; Left :inMaps.Character_Set; Right :inMaps.Character_Set; Justify :inAlignment := Strings.Left; Pad :inCharacter := Space);functionHead (Source :inString; Count :inNatural; Pad :inCharacter := Space)returnString;procedureHead (Source :inoutString; Count :inNatural; Justify :inAlignment := Left; Pad :inCharacter := Space);functionTail (Source :inString; Count :inNatural; Pad :inCharacter := Space)returnString;procedureTail (Source :inoutString; Count :inNatural; Justify :inAlignment := Left; Pad :inCharacter := Space);-- String constructor functionsfunction"*"(Left :inNatural; Right :inCharacter)returnString;function"*"(Left :inNatural; Right :inString)returnString;endAda.Strings.Fixed;