LOCALIZAR SUBSTRINGS EM UM ARQUIVO DE TEXTO
Boa tarde pessoal,
preciso de uma ajuda,
tenho um arquivo de texto e quero fazer o seguinte, Se a linha começar com a string [Ô]54[Ô] e na posição 16 conter a substring [Ô]22[Ô]
quero que a substring [Ô]22[Ô] altere para [Ô]01[Ô].
consigo localizar e alterar, só que localiza e altera somente na [ô]primeira linha[ô], preciso que o codigo percorra [ô][txt-color=#0000f0]todas as linhas[/txt-color][ô] do texto
localizando e alterando os dados
to usando esse código:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim nome As String = TextBox1.Text
Dim substring As String
Dim substring1 As String
substring = nome.Substring(0, 2)
substring1 = nome.Substring(16, 2)
If substring = [Ô]54[Ô] And substring1 = [Ô]22[Ô] Then
Mid (TextBox1.Text, 17) = [Ô]01[Ô]
End If
End Sub
\\\\\
obrigado
preciso de uma ajuda,
tenho um arquivo de texto e quero fazer o seguinte, Se a linha começar com a string [Ô]54[Ô] e na posição 16 conter a substring [Ô]22[Ô]
quero que a substring [Ô]22[Ô] altere para [Ô]01[Ô].
consigo localizar e alterar, só que localiza e altera somente na [ô]primeira linha[ô], preciso que o codigo percorra [ô][txt-color=#0000f0]todas as linhas[/txt-color][ô] do texto
localizando e alterando os dados
to usando esse código:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim nome As String = TextBox1.Text
Dim substring As String
Dim substring1 As String
substring = nome.Substring(0, 2)
substring1 = nome.Substring(16, 2)
If substring = [Ô]54[Ô] And substring1 = [Ô]22[Ô] Then
Mid (TextBox1.Text, 17) = [Ô]01[Ô]
End If
End Sub
\\\\\
obrigado
Após a primeira verificação, tem que procurar o proximo numero 54 e 16 posicoes depois dele verificar se existe o numero 22 novamente, é isso? vai ser sempre assim?
vlw
vlw
Isso mesmo, só que tem que procurar na próxima linha do texto.
meu arquivo tem mais de 1000 linhas, e preciso que faça a verificação em todas as linhas.
vlww
meu arquivo tem mais de 1000 linhas, e preciso que faça a verificação em todas as linhas.
vlww
Cara, eu fiz o codigo abaixo de cabeça mesmo. Não testei e não tenho nem ideia se está funcionando. Faz uma depuração no código e veja se pelos menos é esse o caminho. Qualquer coisa, faz uma adaptação ai.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim nome As String = TextBox1.Text
Try
For i as integer = 0 to nome.length-1
If (nome.Substring(i*16, 2) = [Ô]54[Ô] OrElse nome.Substring((i*16)+2, 2) = [Ô]54[Ô] ) AndAlso nome.Substring((i+1)*16, 2) = [Ô]22[Ô] Then
[ô]Se chegou aqui é porque está funcionando. Verifique se a funcao abaixo está fazendo certinho mesmo.
Mid (TextBox1.Text, ((i+1)*16)+1) = [Ô]01[Ô]
end If
Next
Catch
End Try
End Sub
vlw
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim nome As String = TextBox1.Text
Try
For i as integer = 0 to nome.length-1
If (nome.Substring(i*16, 2) = [Ô]54[Ô] OrElse nome.Substring((i*16)+2, 2) = [Ô]54[Ô] ) AndAlso nome.Substring((i+1)*16, 2) = [Ô]22[Ô] Then
[ô]Se chegou aqui é porque está funcionando. Verifique se a funcao abaixo está fazendo certinho mesmo.
Mid (TextBox1.Text, ((i+1)*16)+1) = [Ô]01[Ô]
end If
Next
Catch
End Try
End Sub
vlw
Jaba, não deu certo....
eu quero localizar linha por linha e onde começar com a substring [Ô]54[Ô] e na posição 16 conter a substring [Ô]22[Ô], quero que a substring [Ô]22[Ô]
seja alterada para [Ô]01[Ô]..
no seu código não respeita a substring [Ô]22[Ô], quando ele acha a substring [Ô]54[Ô] ele altera independente do numero que estiver na posição 16 para [Ô]01[Ô]
o meu código faz correto, só que não passa para as linhas abaixo.
o meu arquivo de texto tem mais de 1000 linhas e preciso que a verificação seja feita em todas as linhas..
penso que daria certo com algo assim... NEXT LINE...
OBRIGADO PELA SUA AJUDA..
fico aguardando mais alguma resposta..
vlw
eu quero localizar linha por linha e onde começar com a substring [Ô]54[Ô] e na posição 16 conter a substring [Ô]22[Ô], quero que a substring [Ô]22[Ô]
seja alterada para [Ô]01[Ô]..
no seu código não respeita a substring [Ô]22[Ô], quando ele acha a substring [Ô]54[Ô] ele altera independente do numero que estiver na posição 16 para [Ô]01[Ô]
o meu código faz correto, só que não passa para as linhas abaixo.
o meu arquivo de texto tem mais de 1000 linhas e preciso que a verificação seja feita em todas as linhas..
penso que daria certo com algo assim... NEXT LINE...
OBRIGADO PELA SUA AJUDA..
fico aguardando mais alguma resposta..
vlw
Coloca ai umas dez linhas desse texto pra mim dar uma analisada e tentar algo aqui pra você.
vlw
vlw
Cara, fiz esse codigo abaixo e funcionou. Eu fiz um pouco diferente das configurações que você me passou. No exemplo eu estou me baseando na posicao 7 e não 16. Se não servir para o teu caso, dá um estudada nele e adapte para o que você realmente quer.
Para preencher o Textbox com esse codigo, é só pegar a saÃda do metodo, fazer um loop em cada posicao do array e concatenar cada uma para somente uma string. Ou seja, vc vai remontar a string pelo array.
public sub getTexto(texto as string) as string()
dim delimitador as string = [Ô]54[Ô];
dim d as Char() = delimitador.ToCharArray();
return texto.Split(d, StringSplitOptions.RemoveEmptyEntries);
end sub
public getTexto as String()
dim texto as String() = getTexto([Ô]54Rodrigo2254Santana54Porto54AAAAA2254bbbbb54[Ô]);
for i as integer = 0 To texto.Length - 1
[ô] No teu caso seria algo como --> if texto(i).Length = 16 AndAlso texto(i).Substring(14, 2) = [Ô]22[Ô])
If texto(i).Length = 7 AndAlso texto(i).Substring(5, 2) = [Ô]22[Ô])
[ô]substitui o 22 pelo 01
texto(i) = texto(i).Replace([Ô]22[Ô], [Ô]01[Ô]);
[ô]Se quiser inseri no final o 01 use isso:
[ô]texto(i) = texto(i).Insert(texto(i).Length, [Ô]01[Ô]);
End if
return texto;
end sub
Para preencher o Textbox com esse codigo, é só pegar a saÃda do metodo, fazer um loop em cada posicao do array e concatenar cada uma para somente uma string. Ou seja, vc vai remontar a string pelo array.
public sub getTexto(texto as string) as string()
dim delimitador as string = [Ô]54[Ô];
dim d as Char() = delimitador.ToCharArray();
return texto.Split(d, StringSplitOptions.RemoveEmptyEntries);
end sub
public getTexto as String()
dim texto as String() = getTexto([Ô]54Rodrigo2254Santana54Porto54AAAAA2254bbbbb54[Ô]);
for i as integer = 0 To texto.Length - 1
[ô] No teu caso seria algo como --> if texto(i).Length = 16 AndAlso texto(i).Substring(14, 2) = [Ô]22[Ô])
If texto(i).Length = 7 AndAlso texto(i).Substring(5, 2) = [Ô]22[Ô])
[ô]substitui o 22 pelo 01
texto(i) = texto(i).Replace([Ô]22[Ô], [Ô]01[Ô]);
[ô]Se quiser inseri no final o 01 use isso:
[ô]texto(i) = texto(i).Insert(texto(i).Length, [Ô]01[Ô]);
End if
return texto;
end sub
vou testar aqui.. depois te falo
vlw irmão.. pela atenção..
vlw irmão.. pela atenção..
ah se quiser da uma olhada
esse é um trecho do texto..
547120851600017422
547120852200017422
5465339590000127551
5470996392000176551
537120852200017422
547120812200018722
esse é um trecho do texto..
547120851600017422
547120852200017422
5465339590000127551
5470996392000176551
537120852200017422
547120812200018722
Eu estou usando o [Ô]54[Ô] como delimitador, por causa disso, no array gerado, não terá o valor 54 na primeira posicao de cada registro. Para corrigir isso, você terá que adicionar o [Ô]54[Ô] no primeiro indice do array. Veja como ficou tudo abaixo:
public sub getTexto(texto as string) as string()
dim delimitador as string = [Ô]54[Ô]
dim d as Char() = delimitador.ToCharArray()
return texto.Split(d, StringSplitOptions.RemoveEmptyEntries)
end sub
public getTexto as String()
dim texto as String() = getTexto([Ô]5471208516000174225471208522000174225465339590000127551[Ô])
for i as integer = 0 To texto.Length - 1
if texto(i).Length = 16 AndAlso texto(i).Substring(14, 2) = [Ô]22[Ô])
[ô]substitui o 22 pelo 01 (Cuidado com esse replace, pois ele substituirá todos os [Ô]22[Ô] por [Ô]01[Ô] na sequencia atual e e não servirá para o seu caso)
[ô]texto(i) = texto(i).Replace([Ô]22[Ô], [Ô]01[Ô])
[ô]Tente isso: (não sei se estou removendo e inserindo na posicao certa, qualquer coisa, faça uns ajustes.
[ô]A ideia é deletar o [Ô]22[Ô] no final e inserir o [Ô]01[Ô] no lugar dele)
texto(i) = texto(i).Remove(texto.Length-3,2)
texto(i) = texto(i).Insert(texto.Length-1, [Ô]01[Ô])
End if
[ô]Adiciona o [Ô]54[Ô] novamente
for i as integer = 0 To texto.Length - 1
texto(i) = texto(i).Insert(0, [Ô]54[Ô])
next
return texto
end sub
Testa ai e me dá um retorno.
public sub getTexto(texto as string) as string()
dim delimitador as string = [Ô]54[Ô]
dim d as Char() = delimitador.ToCharArray()
return texto.Split(d, StringSplitOptions.RemoveEmptyEntries)
end sub
public getTexto as String()
dim texto as String() = getTexto([Ô]5471208516000174225471208522000174225465339590000127551[Ô])
for i as integer = 0 To texto.Length - 1
if texto(i).Length = 16 AndAlso texto(i).Substring(14, 2) = [Ô]22[Ô])
[ô]substitui o 22 pelo 01 (Cuidado com esse replace, pois ele substituirá todos os [Ô]22[Ô] por [Ô]01[Ô] na sequencia atual e e não servirá para o seu caso)
[ô]texto(i) = texto(i).Replace([Ô]22[Ô], [Ô]01[Ô])
[ô]Tente isso: (não sei se estou removendo e inserindo na posicao certa, qualquer coisa, faça uns ajustes.
[ô]A ideia é deletar o [Ô]22[Ô] no final e inserir o [Ô]01[Ô] no lugar dele)
texto(i) = texto(i).Remove(texto.Length-3,2)
texto(i) = texto(i).Insert(texto.Length-1, [Ô]01[Ô])
End if
[ô]Adiciona o [Ô]54[Ô] novamente
for i as integer = 0 To texto.Length - 1
texto(i) = texto(i).Insert(0, [Ô]54[Ô])
next
return texto
end sub
Testa ai e me dá um retorno.
Fiz de outra forma aqui. Dá uma olhada ai e me diga se é isso mesmo.
vlw
vlw
Tópico encerrado , respostas não são mais permitidas