Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

duduml

dividir string [Resolvido]

Mensagens Recomendadas

duduml

Boas pessoal!

estou aqui enrascado com algo fácil...mas como não tenho programado VB, aliás, nunca fiz grandes coisas, está difícil...

Bem, é o seguinte...

dado este número (EX): 1234567891,1234567,1,12345678,123

quero ficar com 1234567891 (ou seja até a primeira virgula) num array...e 123 (da ultima virgula até ao fim) noutro array

eu sei, é fácil...mas eu não estou a conseguir...se fosse C# seria mais fácil...estou mais sabedor da sintaxe e funcionalidades....

cumps 😎


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nokPT

C# mais fácil  :nono:

Mas ok, se te sentes mais à vontade com C# tudo bem, podes fazer em C# e converter para VB, há na net vários links para isso

Código VB.NET não testado

Dim strOrigem  as String = "1234567891,1234567,1,12345678,123"
Dim strNúmeros() as String = strOrigem.Split(",")
Dim strPrimeiroNúmero as String = strNúmeros(0)
Dim strÚltimoNúmeros as String = strNúmeros(4)

' ARRAY? OK
Dim intPrimeirosNúmeros(strNúmeros(0).Length) as Integer
For i as integer = 0 to intPrimeirosNúmeros.Length
     intPrimeirosNúmeros(i)=int(strPrimeirosNúmeros(i))
Next

Vê se já ajuda


Ricardo Timóteo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

eu não disse que fosse mais fácil...só estou mais habituado... :)

Obrigado pela ajuda

já devo chegar la...

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pwyll

primeira parte

Dim numero as string = "1234567891,1234567,1,12345678,123"
Dim _array() As String = {numero.Substring(0, numero.IndexOf(",")), numero.Substring(numero.LastIndexOf(","))}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

quero ficar com 1234567891 (ou seja até a primeira virgula) num array...e 123 (da ultima virgula até ao fim) noutro array

Queres mesmo dizer arrays diferentes, ou querias dizer elementos?

Se for elementos basta-te:

Dim numero as string = "1234567891,1234567,1,12345678,123"
Dim NumArray() As String = numero.Split(",")

E se tiveres o Option Strict ligado:

Dim numero As String = "1234567891,1234567,1,12345678,123"
Dim NumArray() As String = numero.Split(Chr(Asc(",")))


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

quero mesmo dizer arrays...

é assim recebo o código numa textbox, depois tenho de fazer essa divisão....porque a primeira parte que referi, indica o numero de artigo...e a ultima, a quantidade....

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Porquê arrays diferentes?

O Pwyll já te resolveu o problema armazenando no elemento zero da array o primeiro número e no elemento 1 do array o útlimo número.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

hum....é que depois não sei se dá para passar cada um para sitios diferentes da BD...

mas deve dar!!! mas como estou enferrujado nisto...:S


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

A minha resolução final foi está....mediante aquilo que eu queria...:

Dim referência As String
        Dim peça As Integer
        Dim quantidade As Integer
        referência = refTextBox1.Text
        peça = Integer.Parse(Microsoft.VisualBasic.Left(referência, 10))
        quantidade = Integer.Parse(Microsoft.VisualBasic.Right(referência, 3))

obrigado pela ajuda de todos!!! :)

[Resolvido]


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pwyll

Ainda bem que encontraste a "tua" solução para o problema.

Como podes verificar pelo teu pequeno exemplo, e pelas respostas que tiveste, em programacao existem n solucoes para a resolucao de um problema assim como diversas abordagens

O codigo que encontraste resolve a situacao que descreveste, no entanto, e se me permites a sugestao, um programador, deve encontrar a solucao mais estavel e consistente que encontrar, o que por vezes faz com que as solucoes nao sejam directas.

O que quero dizer com isto é o seguinte, e se em vez de:

Dim numero as string = "1234567891,1234567,1,12345678,123"

a string for:

Dim numero as string = "12345,67891,1234567,1,1234567812,3"

ou seja o resultado ja nao vai ser o pretendido originalmente. O codigo que escreveste, esta a partir do presuposto que existem 10 e 3 digitos antes da primeira e pos a ultima ",".

Por vezes este tipo de situacoes até podem ser irrelevantes, mas noutras podem provocar erros muito grandes.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

pois...eu sei disso...;)

mas neste caso as strings são sempre sempre iguais...:D

como tal, este código serve perfeitamente...é claro que o código que me foi dado/sugerido, serve para o caso que falas-te e para o meu...

Ainda assim, não utilizei este código

Dim numero as string = "1234567891,1234567,1,12345678,123"
Dim _array() As String = {numero.Substring(0, numero.IndexOf(",")), numero.Substring(numero.LastIndexOf(","))}

porque não o percebi muito bem (à primeira vista), depois se quero passar os dados para aqui;

        Dim peça As Integer
        Dim quantidade As Integer
        peça = ????
        quantidade = ????

Como faço???

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pwyll

Dim numero as string = "1234567891,1234567,1,12345678,123"
Dim peça As Integer
Dim quantidade As Integer
peça = numero.Substring(0, numero.IndexOf(","))
quantidade = numero.Substring(numero.LastIndexOf(","))

Nao te esquecas de marcar o post como resolvido

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

Bom dia!!

só hoje pude experimentar o código....e não está bem...:S

Dim numero as string = "1234567891,1234567,1,12345678,123"
Dim peça As Integer
Dim quantidade As Integer
peça = numero.Substring(0, numero.IndexOf(","))
quantidade = numero.Substring(numero.LastIndexOf(","))

o número de peça está bem, mas o número de quantidade não..:S retorna 0...quando neste caso deveria ser 123....

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
renafi

Custou a entender o que se passava.... ;)  tens a variável quantidade como Integer. Muda isso para String


Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

lol

já modifiquei...mas, não quero que apareça a vírgula..:S  ;)

        Dim numero As String
        Dim peça As Integer
        Dim quantidade As String
        numero = refTextBox1.Text
        peça = numero.Substring(0, numero.IndexOf(","))
        quantidade = numero.Substring(numero.LastIndexOf(","))
        quantidadelabel.Text = quantidade
        peçalabel.Text = peça

obrigado:)

cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
renafi

Pois, esqueci-me de indicar isso da virgula. Mas era fixe tu também descobrires por ti o que era necessário...

quantidade = numero.Substring(numero.LastIndexOf(",")+1)

Basta incrementares a posição para a função Substring começar a retirar depois da virgula.


Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

lool

andei la perto..:S só que não incrementava aí, e dava erro...

Pronto, está feito...

resultado final:

Dim numero As String
        Dim peça As Integer
        Dim quantidade As String
        numero = refTextBox1.Text
        peça = numero.Substring(0, numero.IndexOf(",")+1)
        quantidade = numero.Substring(numero.LastIndexOf(","))
        quantidadelabel.Text = quantidade
        peçalabel.Text = peça

muito obrigado a todos...

está feito  ;)


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.