Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

duduml

dividir string [Resolvido]

Recommended Posts

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!"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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(","))}

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
duduml

Muito obrigado pessoal...;)

é isso mesmo...

Cumprimentos,


"use windows, você merece!"

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.