Dicas - Implementando a função SubString

Abordaremos nesta dica, a criação de uma função que retorne uma parte específica de uma string.

Abordaremos nesta dica, a criação de uma função que retorne uma parte específica de uma string. A função, que chamaremos de SubString, deverá receber os seguintes parâmetros:

  1. a string original;
  2. qual parte se deseja retirar da string original, por exemplo, parte 1, parte 2, etc;
  3. o separador que será utilizado para dividir a string original. Este separador deverá constar na string original, caso contrário o resultado será a string original e não uma parte dela.
SubString('PRIMEIRO SEGUNDO TERCEIRO', 1, ' ') = 'SEGUNDO'
Listagem 1. Exemplo

Observações

  1. Na função SubString, o índice do parâmetro 'Parte' é base-zero, ou seja, Parte = 0 retornará a primeira substring, Parte = 1 retornará a segunda, e assim sucessivamente;
  2. A função SubString é sensível ao texto, portanto certifique-se de digitar no parâmetro 'Separador', o caractere respeitando o formato da string original, caso contrário o resultado será a string original e não uma parte dela;
  3. No exemplo acima o separador utilizado é um espaço em branco (#32).

Etapas

Primeira Etapa

Crie um novo projeto e insira no formulário os seguintes componentes da palheta Standard: 4 Edits, 4 Labels e 1 Botão. Monte o Layout do formulário para que fique igual o desenho abaixo. Altere também os Captions dos Labels da seguinte forma:

Label1 = String Original: Label2 = Parte: Label3 = Separador: Label4 = Resultado:

Segunda Etapa

Escreva o código a seguir, de forma que a sua Unit se pareça com o texto abaixo:

unit untSubString; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; edtStringOriginal: TEdit; edtParte: TEdit; edtSeparador: TEdit; edtResultado: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function SubString(Str: string; Parte: integer; Separador: string): string; var lp0, sln, CurrN: integer; EmSep, PrimEncontrado: boolean; begin result := ''; CurrN := 0; EmSep := false; PrimEncontrado := false; sln := length(Str); for lp0 := 1 to sln do begin if Pos(Str[lp0],Separador) > 0 then begin if not EmSep then begin if PrimEncontrado then inc(CurrN); end; EmSep := true; if CurrN > Parte then break; end else begin EmSep := false; PrimEncontrado := true; if CurrN = Parte then result := result + Str[lp0]; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var strOriginal, strSeparador, strResultado: string; intParte: Integer; begin strOriginal := edtStringOriginal.Text; intParte := StrToInt(edtParte.Text); strSeparador := edtSeparador.Text; strResultado := SubString(strOriginal, intParte, strSeparador); edtResultado.Text := strResultado end; end.
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados