QUEBRAR STRING A CADA 40 CARACTERES
Ola amigos...
Como posso quebrar uma string a cada 40 caracteres?
DETALHE, nao pode cortar palavras no meio, tem que corta sempre em um espaço anterior
exemplo:
[Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]
tem que ficar assim:
EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE
CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA
ESSE EXEMPLO COMO FICARIA
alguem sabe?
Como posso quebrar uma string a cada 40 caracteres?
DETALHE, nao pode cortar palavras no meio, tem que corta sempre em um espaço anterior
exemplo:
[Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]
tem que ficar assim:
EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE
CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA
ESSE EXEMPLO COMO FICARIA
alguem sabe?
Veja se isso te atende...
Dim texto As String
texto = [Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]
Dim textoquebrado As String
Dim linha As String
Dim textosplit
textosplit = Split(texto, [Ô] [Ô], 40)
For i% = 0 To UBound(textosplit)
If Len(linha) + Len(textosplit(i%)) < 40 Then
linha = linha + textosplit(i%) + [Ô] [Ô]
Else
textoquebrado = textoquebrado + linha + vbNewLine
linha = textosplit(i%) + [Ô] [Ô]
End If
Next i%
textoquebrado = textoquebrado + linha
Text1.Text = textoquebrado
Pra mim text1, tinha:
EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM
QUE CORTAR SEMPRE EM UM ESPAÇO
ANTERIOR. VEJA ESSE EXEMPLO COMO
FICARIA
Dim texto As String
texto = [Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]
Dim textoquebrado As String
Dim linha As String
Dim textosplit
textosplit = Split(texto, [Ô] [Ô], 40)
For i% = 0 To UBound(textosplit)
If Len(linha) + Len(textosplit(i%)) < 40 Then
linha = linha + textosplit(i%) + [Ô] [Ô]
Else
textoquebrado = textoquebrado + linha + vbNewLine
linha = textosplit(i%) + [Ô] [Ô]
End If
Next i%
textoquebrado = textoquebrado + linha
Text1.Text = textoquebrado
Pra mim text1, tinha:
EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM
QUE CORTAR SEMPRE EM UM ESPAÇO
ANTERIOR. VEJA ESSE EXEMPLO COMO
FICARIA
ola amigo...
quase... mas nao deu certo ainda.. veja que estou usando #print
mas esta saindo torto.. veja como estou fazendo
Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit
Dim j As Integer
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)
For j% = 0 To UBound(TextoSplit)
If Len(Linha) + Len(TextoSplit(j%)) < 40 Then
Linha = Linha + TextoSplit(j%) + [Ô] [Ô]
Else
Print #1, Linha
Linha = TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
quase... mas nao deu certo ainda.. veja que estou usando #print
mas esta saindo torto.. veja como estou fazendo
Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit
Dim j As Integer
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)
For j% = 0 To UBound(TextoSplit)
If Len(Linha) + Len(TextoSplit(j%)) < 40 Then
Linha = Linha + TextoSplit(j%) + [Ô] [Ô]
Else
Print #1, Linha
Linha = TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
na verdade o primeiro paragrafo funciona tranquilo, o problema é nos proximos paragrafos
estou pegando o texto do banco de dados que esta em um campo MEMORANDO... do ACCESS
talvez falte apenas um detalhe
estou pegando o texto do banco de dados que esta em um campo MEMORANDO... do ACCESS
talvez falte apenas um detalhe
substitua
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)
Por
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)
Por
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])
tente ai
Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])
For j% = 0 To UBound(TextoSplit)
If Len(TextoSplit(j%)) > 40 Then
j% = j% - 1
Linha = Linha & TextoSplit(j%) + VbCrLf
Else
Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha
Citação::
tente ai
Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])
For j% = 0 To UBound(TextoSplit)
If Len(TextoSplit(j%)) > 40 Then
j% = j% - 1
Linha = Linha & TextoSplit(j%) + VbCrLf
Else
Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha
amigo, dessa forma nem cortou o texto
Tem jeito de vc postar o texto inteiro aqui, assim, eu testo pra vc e faço funcionar...
Citação::
Tem jeito de vc postar o texto inteiro aqui, assim, eu testo pra vc e faço funcionar...
amigo, estou testando com esse mesmo texto..mas com paragrafos gravado no banco ACCESS em um campo MEMORANDO
texto = [Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA
EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA
EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA
[Ô]
estou quase conseguindo...
o problema parece ser nos paragrafos.. se for um texto continuo funciona normalmente.
o problema parece ser nos paragrafos.. se for um texto continuo funciona normalmente.
estou fazendo assim...
atrapalha só quando tem <enter> no banco de dados..
como é representado o <enter> quando vem do banco de dados com campo memorando?
Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer
Dim NovaLinha As String
TextoSplit = Split(Trim(TBConfig!TextoFormal), [Ô] [Ô])
For j% = 0 To UBound(TextoSplit)
If Len(NovaLinha & TextoSplit(j%)) > 40 Then
j% = j% - 1
Linha = Linha + vbCrLf
NovaLinha = [Ô][Ô] [ô] LIMPA
Else
Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
NovaLinha = NovaLinha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha
atrapalha só quando tem <enter> no banco de dados..
como é representado o <enter> quando vem do banco de dados com campo memorando?
Tópico encerrado , respostas não são mais permitidas