You are on page 1of 8

Manipulao de Strings

julho 1st, 2011 | Autor: Rogrio Rafael Lino

Segue abaixo uma srie de funes para manipulao de strings. ALLTRIM() Retorna uma string sem os espaos direita e esquerda, referente ao contedo informadocomo parmetro. A funo ALLTRIM() implementa as aes das funes RTRIM (right trim) e LTRIM (left trim). Sintaxe: ALLTRIM(cString) Parmetros cString String que ser avaliada para remoo dos espaos a direita e a esquerda. Exemplo:

Cdigo 1 cNome := ALLTRIM(SA1->A1_NOME) 2 MSGINFO(Dados do campo A1_NOME:+CRLF 3 Tamanho: + CVALTOCHAR(LEN(SA1->A1_NOME))+CRLF 4 Texto: + CVALTOCHAR(LEN(cNome)))
ASC() Converte uma informao caractere em seu valor de acordo com a tabela ASCII. Sintaxe: ASC(cCaractere) Parmetros cCaractere Caracter que ser consultado na tabela ASCII. Exemplo:

Cdigo USER FUNCTION NoAcento(Arg1) 1 Local nConta := 0 2 Local cLetra := "" 3 Local cRet := "" 4 Arg1 := Upper(Arg1) 5 For nConta:= 1 To Len(Arg1) cLetra := SubStr(Arg1, nConta, 1) 6 Do Case 7 Case (Asc(cLetra) > 191 .and. Asc(cLetra) < 198) .or.; 8 (Asc(cLetra) > 223 .and. Asc(cLetra) < 230) 9 cLetra := "A" 10 Case (Asc(cLetra) > 199 .and. Asc(cLetra) < 204) .or.; 11 (Asc(cLetra) > 231 .and. Asc(cLetra) < 236) 12 cLetra := "E" 13 Exemplo (continuao): 14 Case (Asc(cLetra) > 204 .and. Asc(cLetra) < 207) .or.; (Asc(cLetra) > 235 .and. Asc(cLetra) < 240) 15 cLetra := "I" 16 Case (Asc(cLetra) > 209 .and. Asc(cLetra) < 215) .or.; 17 (Asc(cLetra) == 240) .or. (Asc(cLetra) > 241 .and. Asc(cLetra) < 247) 18 cLetra := "O" 19 Case (Asc(cLetra) > 216 .and. Asc(cLetra) < 221) .or.; 20 (Asc(cLetra) > 248 .and. Asc(cLetra) < 253) cLetra := "U" 21 Case Asc(cLetra) == 199 .or. Asc(cLetra) == 231 22 cLetra := "C" 23 EndCase 24 cRet := cRet+cLetra 25 Next 26 Return UPPER(cRet) 27

28 29 30
AT() Retorna a primeira posio de um caracter ou string dentro de outra string especificada. Sintaxe: AT(cCaractere, cString ) Parmetros cCaractere Caractere ou string que se deseja verificar cString String na qual ser verificada a existncia do contedo de cCaractere. Exemplo:

Cdigo 1 STATIC FUNCTION NOMASCARA(cString,cMascara,nTamanho) 2 LOCAL cNoMascara := "" 3 LOCAL nX := 0 4 IF !Empty(cMascara) .AND. AT(cMascara,cString) > 0 5 FOR nX := 1 TO Len(cString) 6 IF !(SUBSTR(cString,nX,1) $ cMascara) cNoMascara += SUBSTR(cString,nX,1) 7 ENDIF 8 NEXT nX 9 cNoMascara := PADR(ALLTRIM(cNoMascara),nTamanho) 10 ELSE 11 cNoMascara := PADR(ALLTRIM(cString),nTamanho) 12 ENDIF 13 RETURN cNoMascara 14
BITON() Funo utilizada para ligar determinados bits de uma String passada por parmetro para a funo. Alm da string ser alterada, a funo tambm recebe como parmetro um numrico que indica o bit de inicio a ser alterado, um numrico que indica a quantidade de bits a serem alterados(ligados) e o tamanho da string passada. Sintaxe: BITON ( < cValue > , < nBitIni > , < nBitEnd > , < nStrLen > ) Parmetros cValue String no qual desejamos ligar os bits. nBitIni Indica a partir de qual bit, comear a ser ligados os bits na String nBitEnd Indica a quantidade de bits que sero ligados a partir do inicio. nStrLen Representa o tamanho da String passada para a funo. CAPITAL() Funo que avalia a string passada como parmetro alterando a primeira letra de cada palavra para maiscula e as demais letras como minsculas. Sintaxe: CAPITAL(cFrase) Parmetros: cFrase String a ser avaliada Retorno: String Contedo da string original com as modificaes necessrias para atender a condio da funo. CHR() Converte um valor nmero referente a uma informao da tabela ASCII no caractere que esta informao representa. Sintaxe: CHR(nASCII) Parmetros nASCII Cdigo ASCII do caractere Exemplo:

Cdigo 1 #DEFINE CRLF CHR(13)+CHR(10) // FINAL DE LINHA

DESCEND() Funo de converso que retorna a forma complementada da expresso string especificada. Esta funo normalmente utilizada para a criao de indexadores em ordem decrescente Sintaxe: DESCEND ( < cString > ) Parmetros: cString Corresponde seqncia de caracteres a ser analisada. Retorno: Caracter String complementada da string analisada. Exemplo:

Cdigo 1 // Este exemplo utiliza DESCEND() em uma expresso INDEX para criar um ndice de d 2 de 3 // ordem descendente: USE Sales NEW 4 INDEX ON DESCEND(DTOS(OrdDate)) TO SalesDate 5 // Depois, DESCEND() pode ser utilizado para fazer uma pesquisa (SEEK) no ndice 6 // descendente: 7 DbSEEK(DESCEND(DTOS(dFindDate)))
GETDTOVAL() Funo utilizada para retornar um numero formatado, de acordo com o valor passado por parmetro, sendo que ir apenas manter os valores numricos contidos na string passada por parmetro, verificando se existe algum caractere . retornando um numero fracionrio, na ordem dos nmeros contidos na string. A funo muito til quando desejamos utilizar o valor numrico de uma data que est contida em uma string. Sintaxe: GETDTOVAL ( < cDtoVal > ) Parmetros: cDtoVal Representa uma string contendo um valor numrico no qual ser convertido. Retorno: Numrico Retorna um dado numrico de acordo com o valor informado em <cDtoVal>. Exemplo: GetDtoVal(123456) //retorno 123456.0000 GetDtoVal(1/2/3/4/5/6) //retorno 123456.0000 GetDtoVal(fim.123456) //retorno 0.123456 GetDtoVal(teste) //retorno 0.0 ISALPHA() Funo utilizada para determinar se o caractere mais esquerda em uma cadeia de caracteres alfabtico, permitindo avaliar se o string especificado comea com um caractere alfabtico. Um caractere alfabtico consiste em qualquer letra maiscula ou minscula de A a Z. Sintaxe: ISALPHA ( < cString > ) Parmetros: cString Cadeia de caracteres a ser examinada. Retorno: Lgico Retorna verdadeiro (.T.) se o primeiro caractere em <cString> for alfabtico, caso contrrio, retorna falso (.F.). ISDIGIT() Funo utilizada para determinar se o caractere mais esquerda em uma cadeia de caracteres um dgito, permitindo avaliar se o primeiro caractere em um string um dgito numrico entre zero e nove. Sintaxe: ISDIGIT ( < cString > ) Parmetros: cString Cadeia de caracteres a ser examinada. Retorno: Lgico Retorna verdadeiro (.T.) caso o primeiro caractere da cadeia seja um dgito entre zero e nove; caso contrrio, retorna falso (.F.). ISLOWER() Funo utilizada para determinar se o caractere mais esquerda uma letra minscula, permitindo avaliar se o primeiro caractere de um string uma letra minscula. o contrrio

de ISUPPER(), a qual determina se a cadeia de caracteres comea com uma letra maiscula. ISLOWER() e ISUPPER() ambas so relacionadas s funes LOWER() e UPPER(), que convertem caracteres minsculos para maisculos, e vice-versa. Sintaxe: ISLOWER( < cString > ) Parmetros: cString Cadeia de caracteres a ser examinada. Retorno: Lgico Retorna verdadeiro (.T.) caso o primeiro caractere da cadeia seja minsculo , caso contrrio, retorna falso (.F.). ISUPPER() Funo utilizada para determinar se o caractere mais esquerda uma letra maiscula, permitindo avaliar se o primeiro caractere de um string uma letra maiscula. o contrrio de ISLOWER (), a qual determina se a cadeia de caracteres comea com uma letra minscula. ISLOWER() e ISUPPER() ambas so relacionadas s funes LOWER() e UPPER(), que convertem caracteres minsculos para maisculos, e vice-versa. Sintaxe: ISUPPER( < cString > ) Parmetros: cString Cadeia de caracteres a ser examinada. Retorno: Lgico Retorna verdadeiro (.T.) caso o primeiro caractere da cadeia seja maisculo, caso contrrio, retorna falso (.F.). LEN() Retorna o tamanho da string especificada no parmetro. Sintaxe: LEN(cString) Parmetros cString String que ser avaliada Exemplo:

Cdigo 1 cNome := ALLTRIM(SA1->A1_NOME) 2 MSGINFO(Dados do campo A1_NOME:+CRLF 3 Tamanho: + CVALTOCHAR(LEN(SA1->A1_NOME))+CRLF 4 Texto: + CVALTOCHAR(LEN(cNome)))
LOWER() Retorna uma string com todos os caracteres minsculos, tendo como base a string passada como parmetro. Sintaxe: LOWER(cString) Parmetros cString String que ser convertida para caracteres minsculos. Exemplo:

Cdigo 1 cTexto := ADVPL 2 MSGINFO(Texto:+LOWER(cTexto))


LTRIM() Funo para tratamento de caracteres utilizada para formatar cadeias de caracteres que possuam espaos em branco esquerda. Pode ser o caso de, por exemplo, nmeros convertidos para cadeias de caracteres atravs da funo STR(). LTRIM() relacionada a RTRIM(), a qual remove espaos em branco direita, e a ALLTRIM(), que remove espaos tanto esquerda quanto direita. O contrrio de ALLTRIM(), LTRIM(), e RTRIM() so as funes PADC(), PADR(), e PADL(), as quais centralizam, alinham direita, ou alinham esquerda as cadeias de caracteres, atravs da insero de caracteres de preenchimento. Sintaxe: LTRIM ( < cString > ) Parmetros: cString <cString> a cadeia de caracteres a ser copiada sem os espaos em branco esquerda. Retorno: Caracter LTRIM() retorna uma cpia de <cString>, sendo que os espaos em branco esquerda foram removidos. Caso <cString> seja uma cadeia de caracteres nula () ou toda

composta de espaos em branco, LTRIM() retorna uma cadeia de caracteres nula (). MATHC() Funo utilizada para realizar operaes matemticas com strings que contm um valor numrico. MATHC() realiza algumas operaes matemticas como: Soma, Subtrao, Diviso, Multiplicao e Exponenciao. A funo ir retornar uma string contendo o resultado da operao matemtica, com uma especificao de at 18 casas de preciso no numero. Sintaxe: MATHC ( < cNum1 > , < cOperacao > , < cNum2 > ) Parmetros: cNum1 String contendo um valor numrico, representando o numero no qual desejamos realizar uma operao. cOperacao Representa a string que indica a operao que desejamos realizar. Olhar na tabela para verificar quais valores devem ser informados aqui. cNum2 String contendo um valor numrico, representando o numero no qual desejamos realizar uma operao. Retorno: Caracter Retorna uma nova string contendo o resultado matemtico da operao. OEMTOANSI() Funo que transforma uma string no Formato OEM / MS-DOS Text para uma string ANSI Text ( formato do Windows ). Quando utilizamos um programa baseado no MS-DOS para alimentar uma base de dados , os acentos e caracteres especiais so gravados como texto OEM . Para tornar possvel a correta visualizao destes dados em uma interface Windows , utilizamos a funo OemToAnsi() para realizar a converso. Ao utilizarmos um programa baseado no Windows para alimentar uma base de dados , o texto capturado no formato ANSI Text . Caso este texto seja utilizado para alimentar uma base de dados a ser acessada atravs de um programa MS-DOS , devemos converter o dado para OEM antes de grav-lo , atravs da funo AnsiToOem(). Sintaxe: OemToAnsi ( < cStringOEM > ) Parmetros: cStringOEM String em formato OEM MsDos a ser convertida. Retorno: Caracter String convertida para ser exibida no Windows ( Formato ANSI ). PADL() / PADR() / PADC() Funes de tratamento de strings que inserem caracteres de preenchimento para completar um tamanho previamente especificado em vrios formatos como data ou numricos. PADC() centraliza <cExp>, adicionando caracteres de preenchimento direita e esquerda. PADL() adiciona caracteres de preenchimento esquerda. PADR() adiciona caracteres de preenchimento direita. Caso o tamanho de <cExp> exceda o argumento <nTamanho>, todas as funes PAD() truncam string preenchida ao <nTamanho> especificado. PADC(), PADL(), e PADR() so utilizadas para exibir cadeias de caracteres de tamanho varivel em uma rea de tamanho fixo. Elas podem ser usadas, por exemplo, para assegurar o alinhamento com comandos ?? consecutivos. Outra utilizao exibir textos em uma tela de tamanho fixo, para certificar-se de que o texto anterior foi completamente sobrescrito. PADC(), PADL(), e PADR() so o contrrio das funes ALLTRIM(), LTRIM(), e LTRIM(), as quais eliminam espaos em branco esquerda e direita de cadeias de caracteres. Sintaxe: PADL / PADR / PADC ( < cExp > , < nTamanho > , [ cCaracPreench ] ) Parmetros cExp Caractere, data, ou numrico no qual sero inseridos caracteres de preenchimento. nTamanho Tamanho da cadeia de caracteres a ser retornada. cCaracPreench Caractere a ser inserido em cExp. Caso no seja especificado, o padro o espao em branco. Retorno: Caracter Retornam o resultado de <cExp> na forma de uma cadeia de caracteres preenchida com <cCaracPreench>, para totalizar o tamanho especificado por <nTamanho>. RAT() Retorna a ltima posio de um caracter ou string dentro de outra string especificada. Sintaxe: RAT(cCaractere, cString) Parmetros

cCaractere Caractere ou string que se deseja verificar cString String na qual ser verificada a existncia do contedo de cCaractere. REPLICATE() A funo Replicate() utilizada para gerar uma cadeira de caracteres repetidos a partir de um caracter base informado, podendo a string gerada conter at 64KB. Caso seja especificado no parmetro de itens a repetir o nmero zero, ser retornada uma string vazia. Sintaxe: REPLICATE(cString, nCount) Parmetros: cString Caracter que ser repetido nCount Quantidade de ocorrncias do caracter base que sero geradas na string de destino. Retorno: cReplicated String contendo as ocorrncias de repeticao geradas para o caracter informado. RETASC() A funo Replicate() utilizada para converter uma string numrica em uma informao composta por letras e nmeros, devido a limitao no tamanho de campos ou variveis de controle, como o caso do campo de sistema X3_ORDEM. Sintaxe: RETASC(cString, nTamanho, lVolta) Parmetros: cString String a ser convertida nTamanho Tamanho mximo da string de retorno lVolta Indica se ser gerada uma string composta por letras e nmeros a partir de uma string apenas numrica (.T.) ou se ser gerada uma string numrica a partir de uma string composta por letras e nmeros (.F.) Retorno: Caracter String convertida conforme o parmetro lVolta. Exemplo1 Converso de numrico para alfanumrico cOrdem := 100 cX3Ordem := RETASC(cOrdem,2,.T.) < Ser retornado A0 Exemplo2 Converso de alfanumrico para numrico cX3Ordem:= A0 cOrdem:= RETASC(cX3Ordem,3,.F.) < Ser retornado 100 RTRIM() Funo para tratamento de caracteres utilizada para formatar cadeias de caracteres que contenham espaos em branco direita. Ela til quando voc deseja eliminar espaos em branco direita ao se concatenar cadeias de caracteres. o caso tpico com campos de banco de dados que so armazenados em formato de tamanho fixo. Por exemplo, voc pode usar RTRIM() para concatenar o primeiro e o ltimo campos de nome para formar uma cadeia de caracteres de nome. LTRIM() relacionada a RTRIM(), que remove espaos em branco direita, e a ALLTRIM(), que remove espaos em branco direita e esquerda. O contrrio de ALLTRIM(), LTRIM(), e RTRIM() so as funes PADC(), PADR(), e PADL(), as quais centralizam, alinham direita, ou alinham esquerda cadeias de caracteres, inserindo caracteres de preenchimento. Sintaxe: RTRIM ( < cString > ) > cTrimString Parmetros: cString <cString> a cadeia de caracteres a ser copiada sem os espaos em branco direita. Retorno: Caracter RTRIM() retorna uma cpia de <cString>, sendo que os espaos em branco direita foram removidos. Caso <cString> seja uma cadeia de caracteres nula () ou totalmente composta por espaos, RTRIM() retorna uma cadeia de caracteres nula (). SPACE() Funo de tratamento de caracteres utilizada para retornar uma quantidade especificada de espaos. A utilizao desta funo tem o mesmo efeito que REPLICATE( , <nCont>), e normalmente utilizada para inicializar uma varivel do tipo caractere, antes que a mesma seja associada a um GET. Sintaxe: SPACE ( < nCont > )

Parmetros: nCont A quantidade de espaos a serem retornados, sendo que o nmero mximo 65.535 (64K). Retorno: Caracter Retorna uma cadeia de caracteres. Se <nCont> for zero, SPACE()retorna uma cadeia de caracteres nula (). STRTOKARR() Funo utilizada para retornar um array, de acordo com os dados passados como parmetro para a funo. Esta funo recebe uma string <cValue> e um caracter <cToken> que representa um separador, e para toda ocorrncia deste separador em <cValue> adicionado um item no array. Sintaxe: STRTOKARR ( < cValue > , < cToken > ) Parmetros: cValue Representa a cadeia de caracteres no qual desejamos separar de acordo com <cToken>. cToken Representa o caracter que indica o separador em <cValue>. Retorno: Array Array de caracteres que representa a string passada como parmetro. Exemplo:

Cdigo 1 STRTOKARR('1;2;3;4;5', ';') //retorna {'1','2','3','4','5'}


STRTRAN() Funo utilizada para realizar a busca da ocorrncia da string, sendo case sensitive. Sintaxe: STRTRAN ( < cString > , < cSearch > , [ cReplace ] , [ nStart ] , [nCount ] ) Parmetros: cString Seqncia de caracteres ou campo memo a ser pesquisado. cSearch Seqncia de caracteres a ser procurada em cString. cReplace Seqncia de caracteres que deve substituir a string cSearch. Caso no seja especificado, as ocorrncias de cSearch em cString sero substitudas por uma string nula (). nStart nStart corresponde ao nmero seqencial da primeira ocorrncia de cSEarch em cString a ser substituda por cReplace. Se este argumento for omitido , o default 1 ( um ) . Caso seja passado um numero menor que 1, a funo retornar uma string em branco (). nCount nCount corresponde ao nmero mximo de trocas que dever ser realizada pela funo . Caso este argumento no seja especificado , o default substituir todas as ocorrncias encontradas. Retorno: Code-Block A funo STRTRAN retorna uma nova string, com as ocorrncias especificadas de cSearch trocadas para cReplace, conforme parametrizao. STUFF() Funo que permite substituir um contedo caractere em uma string j existente, especificando a posio inicial para esta adio e o nmero de caracteres que sero substitudos. Sintaxe: STUFF(cString, nPosInicial, nExcluir, cAdicao) Parmetros: cString A cadeia de caracteres destino na qual sero eliminados e inseridos caracteres. nPosInicial A posio inicial na cadeia de caracteres destino onde ocorre a insero/eliminao. nExcluir A quantidade de caracteres a serem eliminados. cAdicao A cadeia de caracteres a ser inserida. Retorno: Caracter Retorna a nova string gerada pela funo com as modificaes. Exemplo:

Cdigo 1 cLin := Space(100)+cEOL // Cria a string base 2 cCpo := PADR(SA1->A1_FILIAL,02) // Informao que ser armazenada na string 3 cLin := Stuff(cLin,01,02,cCpo) // Substitui o contedo de cCpo na string base

SUBSTR() Retorna parte do contedo de uma string especificada, de acordo com a posio inicial destecontedo na string e a quantidade de caracteres que dever ser retornada a partir daquele ponto (inclusive). Sintaxe: SUBSTR(cString, nPosInicial, nCaracteres) Parmetros cString String que se deseja verificar nPosInicial Posio inicial da informao que ser extrada da string nCaracteres Quantidade de caracteres que dever ser retornada a partir daquele ponto (inclusive). Exemplo:

Cdigo 1 cCampo := A1_NOME 2 nPosUnder := AT(cCampo) 3 cPrefixo := SUBSTR(cCampo,1, nPosUnder) //

A1_

TRANSFORM() Funo de converso que formata valores caractere, data, lgicos e numricos conforme um string de mscara especificado, a qual inclui uma combinao de strings de template e funes de picture. Ela faz o mesmo que a clusula PICTURE do comando @SAY, sendo normalmente utilizada para formatar dados a serem enviados tela ou impressora. Sintaxe: TRANSFORM ( < cExp > , < cSayPicture > ) Parmetros: cExp O valor a ser formatado. Esta expresso pode ser qualquer tipo de dados vlidos, exceto vetor, bloco de cdigo, e NIL. cSayPicture Uma string de caracteres de mscara e template usado para descrever o formato da cadeia de caracteres a ser retornada. Retorno: - Retorna a converso de <cExp> para uma cadeia de caracteres formatada conforme a definio em <cSayPicture>. UPPER() Retorna uma string com todos os caracteres maisculos, tendo como base a string passada como parmetro. Sintaxe: UPPER(cString) Parmetros cString String que ser convertida para caracteres maisculos. Exemplo:

Cdigo 1 cTexto := ADVPL 2 MSGINFO(Texto:+LOWER(cTexto))