none
Dificuldades com SPLIT RRS feed

  • Pergunta

  • Olá,

    Estou com o seguinte problema relacionado ao SPLIT:

    Imagine que em um ComboBox, você possa selecionar tanto "MX-84 - 885,00" quanto "Bordô - 52,00"
    Se eu perguntar "Se o Split (1) é numérico e o Split (2) é numérico, então varItem = Split (2)" vou conseguir fazer com que o valor de 885,00 do primeiro item seja detectado, mas se eu selecionar o segundo item, não há "Split (2)" e ele da erro.

    o código que tenho por enquanto é esse:
    Dim item As String
    Dim valor As Decimal
     If Me.Label6.Text = "" Then
      Me.Label6.Text = "0"
     End If
     total = Label6.Text
     If IsNumeric(cboxModelo.Text.Split("-")(1).Trim) And IsNumeric(cboxModelo.Text.Split("-")(2)) Then
      item = cboxModelo.Text.Split("-")(2).Trim
     ElseIf IsNumeric(cboxModelo.Text.Split("-")(1).Trim) Then
      item = cboxModelo.Text.Split("-")(1).Trim
     ElseIf IsNumeric(cboxModelo.Text.Split("-")(2).Trim) Then
      item = cboxModelo.Text.Split("-")(2).Trim
     End If
     valor = total + Convert.ToDecimal(item)
     Me.Label6.Text = Format(valor, "R$ 0.00")
     


    Quero fazer com que seja possível pegar o valor do ("MX-84 - 885,00") e o do ("Bordô - 52,00")
    • Editado Salomão sábado, 1 de maio de 2010 23:55 Correção
    sábado, 1 de maio de 2010 23:45

Respostas

  • Amigo tenta pegar sempre o ultimo item:

     

    Dim matriz() As String
    
    Dim texto As String = "Bordô - 52,00"
    
    matriz = texto.Split("-")
    
    varItem = matriz(matriz.GetUpperBound(0))


    msn: poseidonfba@hotmail.com
    • Marcado como Resposta Salomão terça-feira, 4 de maio de 2010 11:53
    segunda-feira, 3 de maio de 2010 23:02
  • Salomão segue novo exemplo.

        Dim matriz() As String = {"MX-84 - 885,00", "Bordô - 52,00"}
        Dim valor As Decimal
    
        For Each texto As String In matriz
    
          ' Busca apenas o valor
          valor = Strings.Right(texto, Strings.StrReverse(texto.ToString).IndexOf(" "))
    
          'Exibe na tela o valor com formato "R$ 0,00"
          MessageBox.Show(valor.ToString("C2"))
    
        Next

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Salomão terça-feira, 4 de maio de 2010 11:53
    terça-feira, 4 de maio de 2010 02:44

Todas as Respostas

  • domingo, 2 de maio de 2010 12:44
    Moderador
  • Desculpe.. Tenho pouca experiência com programação.
    Não entendi muito bem o que os sites explicavam, mas tentei aquilo do "New Char" e não funcionou. Mostra erro.

    Seria possível me explicar alguma lógica de como usar o Split corretamente neste caso?
    segunda-feira, 3 de maio de 2010 21:52
  • O meu problema, se me expressei mal, é o seguinte:

    Tenho um único ComboBox, no qual posso escolher tanto "MX-84 - 885,00" quanto "Bordô - 52,00". No entanto, tenho que aplicar uma única lógica para detectar o preço, pois também há outros produtos que podem ser escolhidos.
    A lógica q apliquei foi a seguinte:

    Se o Split (1) é numérico e o Split (2) é numérico, então

    varItem = Split (2)

    'vou conseguir fazer com que o valor de 885,00 do primeiro item seja detectado, mas se eu selecionar o segundo item,que é o "Bordô - 52,00", não há "Split (2)" e ele da erro. Usei essa lógica pois estou com problemas com a pergunta "se é numérico, então...". No produto MX-84, o "84" também é numérico e isso me traz problemas.

    segunda-feira, 3 de maio de 2010 21:58
  • Amigo tenta pegar sempre o ultimo item:

     

    Dim matriz() As String
    
    Dim texto As String = "Bordô - 52,00"
    
    matriz = texto.Split("-")
    
    varItem = matriz(matriz.GetUpperBound(0))


    msn: poseidonfba@hotmail.com
    • Marcado como Resposta Salomão terça-feira, 4 de maio de 2010 11:53
    segunda-feira, 3 de maio de 2010 23:02
  • Ah! Isso mesmo que eu queria fazer!
    Não tenho tempo de testar agora, mas assim que tiver, posto o resultado aqui e avalio o seu post como resposta.

    Brigadão!
    terça-feira, 4 de maio de 2010 01:01
  • Salomão segue novo exemplo.

        Dim matriz() As String = {"MX-84 - 885,00", "Bordô - 52,00"}
        Dim valor As Decimal
    
        For Each texto As String In matriz
    
          ' Busca apenas o valor
          valor = Strings.Right(texto, Strings.StrReverse(texto.ToString).IndexOf(" "))
    
          'Exibe na tela o valor com formato "R$ 0,00"
          MessageBox.Show(valor.ToString("C2"))
    
        Next

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Salomão terça-feira, 4 de maio de 2010 11:53
    terça-feira, 4 de maio de 2010 02:44
  • Leonardo, eu realmente tentei entender esses códigos, mas para mim isso ainda é um pouco avançado.
    Vou ficar colocando e testando esses códigos no Visual Studio até que eu entenda.

    Obrigado.

    terça-feira, 4 de maio de 2010 11:28