Clipper On Line • Ver Tópico - Remover quebra de linha

Remover quebra de linha

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Remover quebra de linha

Mensagempor Itamar M. Lins Jr. » 22 Nov 2021 15:06

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Remover quebra de linha

Mensagempor JoséQuintas » 22 Nov 2021 15:55

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Remover quebra de linha

Mensagempor Jairo Maia » 22 Nov 2021 15:58

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:
cVar := StrTran( HardCR(  AllTrim( descricao ) ), Hb_EOL() ) 
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Remover quebra de linha

Mensagempor marcosgambeta » 22 Nov 2021 17:54

Olá Itamar,

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

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.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Remover quebra de linha

Mensagempor Itamar M. Lins Jr. » 22 Nov 2021 17:59

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Remover quebra de linha

Mensagempor marcosgambeta » 22 Nov 2021 18:32

Itamar,

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

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).
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro