DMarlon Studio

Lección 12 · 12 de 20

Cadenas de texto · Pascal

Trabaje con textos en Pascal: unir con +, Length, Copy, Pos, UpperCase y LowerCase para separar el usuario y el dominio de un correo.

Pascal · Cadenas de texto en DMarlon Studio: el código del ejemplo y su salida en la terminal

Las cadenas se unen con `+`: first + ' ' + last da Ada Lovelace. `Length` da su número de caracteres, 12.

Cada carácter tiene su posición, que empieza en 1: first[1] es 'A', y así salen las iniciales. `UpperCase` y `LowerCase`, de SysUtils, devuelven una copia en mayúsculas o en minúsculas; la cadena original no cambia.

`Pos(trozo, texto)` busca una cadena dentro de otra y da la posición donde empieza: la @ está en la 13. Si no la encuentra, devuelve 0, como ocurre con 'xyz'.

`Copy(texto, inicio, cuántos)` recorta un trozo. Con la posición de la @, Copy(email, 1, at - 1) toma lo que hay delante (el usuario) y Copy(email, at + 1, Length(email) - at), lo que hay detrás (el dominio).

+ solo une cadenas: para añadir un número hay que convertirlo antes con `IntToStr` (o con FloatToStr si es real). WriteLn, en cambio, acepta números directamente si se separan con comas.

Código · main.pas

program main;uses  SysUtils;var  first, last, full, email, user, domain: String;  at: Integer;begin  first := 'Ada';  last := 'Lovelace';  // + joins strings.  full := first + ' ' + last;  WriteLn('Full name: ', full, ' (', Length(full), ' characters)');  // Characters are numbered from 1.  WriteLn('Initials: ', first[1], last[1]);  WriteLn('In capitals: ', UpperCase(full));  WriteLn('In small letters: ', LowerCase(full));  // Pos finds a piece of text; Copy(s, start, count) cuts one out.  email := 'ada.lovelace@example.com';  at := Pos('@', email);  user := Copy(email, 1, at - 1);  domain := Copy(email, at + 1, Length(email) - at);  WriteLn('The @ is at position ', at);  WriteLn('User: ', user, ' | Domain: ', domain);  WriteLn('Position of "xyz": ', Pos('xyz', email));  // IntToStr turns a number into text, ready to join.  WriteLn('Order ' + IntToStr(1024) + ' for ' + first);end.

Salida · fpc main.pas && ./main

Full name: Ada Lovelace (12 characters)
Initials: AL
In capitals: ADA LOVELACE
In small letters: ada lovelace
The @ is at position 13
User: ada.lovelace | Domain: example.com
Position of "xyz": 0
Order 1024 for Ada

Para recordar

  • + une cadenas y Length cuenta sus caracteres.
  • Las posiciones empiezan en 1: s[1] es el primer carácter.
  • Pos busca (y da 0 si no encuentra); Copy recorta.
  • IntToStr convierte un número en texto.

Ejercicio

A partir de domain, saque con Pos y Copy el nombre de la empresa (example) y la extensión (com), y escriba el usuario en mayúsculas.