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
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Remover quebra de linha
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Remover quebra de linha
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:
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() ) 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)
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)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Remover quebra de linha
Olá Itamar,
Visto que Windows usa CR + LF e Unix apenas LF, eu costumo resolver assim:
Qualquer quebra de linha é removida, seja CR+LF, LF+CR ou apenas LF.
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)Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Remover quebra de linha
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.
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.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Remover quebra de linha
Itamar,
Outra opção seria limpar da string tudo que for < 32. Veja o exemplo abaixo:
Neste caso, você tem a opção de decidir o que fazer com cada código de controle (faixa 00-31).
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 cNewStringAtenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta