Página 1 de 1

Remover quebra de linha

Enviado: 22 Nov 2021 15:06
por Itamar M. Lins Jr.
Olá!
Estou tentando remover um caractere que é interpretado como CHR LF + CR
Usando alltrim(descricao) não adianta.

Tem outro comando para pegar só o que tem escrito e visível ?

Saudações,
Itamar M. Lins Jr.

Remover quebra de linha

Enviado: 22 Nov 2021 15:55
por JoséQuintas
Talvez o Reg_Ex*, ou o StrTran() pra trocar caracteres.
Já vi lugares que trocam o Chr(13) + Chr(10) por Chr(10) + Chr(13), não sei porque.

Remover quebra de linha

Enviado: 22 Nov 2021 15:58
por Jairo Maia
Mas qual caractere é esse LF? Quebra de linha em Windows é composto por 2 caracteres, a saber Chr( 13 ) + Chr( 10 ), onde Chr( 13 ) é nominado CR e Chr( 10 ) nomindado LF.

Textos salvos pelo MemoEdit(), as linhas são terminadas por Soft carriage, qie é composto pelos caracteres Chr( 141 ) + Chr( 10 ). Para transformar Soft Carriage em Hard Carriage ( Chr( 13 ) + Chr( 10 ) ) tem a função HardCR( cString ), não sei se esse é o caso.

Se esse for o caso, basta então fazer:

Código: Selecionar todos

cVar := StrTran( HardCR(  AllTrim( descricao ) ), Hb_EOL() ) 

Remover quebra de linha

Enviado: 22 Nov 2021 17:54
por marcosgambeta
Olá Itamar,

Visto que Windows usa CR + LF e Unix apenas LF, eu costumo resolver assim:

Código: Selecionar todos

cTexto := StrTran( cTexto, chr( 13 ) , "" ) // elimina CR (carriage return)
cTexto := StrTran( cTexto, chr( 10 ) , "" ) // elimina LF (line feed)
Qualquer quebra de linha é removida, seja CR+LF, LF+CR ou apenas LF.

Remover quebra de linha

Enviado: 22 Nov 2021 17:59
por Itamar M. Lins Jr.
Olá!
Acredito que vem da internet. Copiar e colar nome, etc do sintegra ou de alguma página em HTML.

Saudações,
Itamar M. Lins Jr.

Remover quebra de linha

Enviado: 22 Nov 2021 18:32
por marcosgambeta
Itamar,

Outra opção seria limpar da string tudo que for < 32. Veja o exemplo abaixo:

Código: Selecionar todos

PROCEDURE Main()

   LOCAL cText

   cText := "teste1 " + chr( 10 ) + " teste2" + chr( 9 ) + "teste3 " + chr( 25 ) + chr( 13 ) + chr( 10 )

   ? len( cText )
   ? cText

   cText := ClearString( cText )

   ? len( cText )
   ? cText

RETURN

FUNCTION ClearString( cString )

   LOCAL cNewString
   LOCAL n

   cNewString := ""

   FOR n := 1 TO len( cString )

      IF asc( substr( cString, n, 1 ) ) == 9 // TAB
         cNewString += chr( 32 )
      ELSEIF asc( substr( cString, n, 1 ) ) >= 32
         cNewString += substr( cString, n, 1 )
      ENDIF

   NEXT n

RETURN cNewString
Neste caso, você tem a opção de decidir o que fazer com cada código de controle (faixa 00-31).