Nuno Teixeira Posted December 10, 2015 at 06:48 AM Report Share #590512 Posted December 10, 2015 at 06:48 AM Olá a todos, Alguém conhece algum método para extrair apenas os números de cada item de uma Listbox? Tentei com o método substring(), ou seja, retirar um número pré-definido de caracteres até restar apenas os últimos caracteres de cada item: Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click Dim x As Integer For x = 0 To ListBox1.Items.Count - 1 ListBox1.Items(x) = ListBox1.Items(x).substring(0, 7) Next x End Sub Se for inserindo items na Listbox e depois aplicar este método as coisas até resultam. No entanto não é o método ideal pois alguns dígitos são apagados no caso de o número ter mais do que 1 dígito. Este método retorna um erro se em vez de inserir items na Listbox importar um ficheiro txt para dentro dessa mesma Listbox (aparentemente ele não reconhece o Index da Listbox). Idealmente o que preciso é de um método para extrair os números de cada item da Listbox, independentemente se os items são inseridos progressivamente ou se são importados para dentro da Listbox. Agradeço desde já a ajuda que alguém me possa dar. Cumprimentos, Nuno Teixeira Link to comment Share on other sites More sharing options...
vikcch Posted December 10, 2015 at 12:18 PM Report Share #590521 Posted December 10, 2015 at 12:18 PM tens algum tipo de separador entre os numeros e as letras?? posta aí uns exemplos de como estão os items da listbox, e como queres que fiquem... Link to comment Share on other sites More sharing options...
Nuno Teixeira Posted December 10, 2015 at 04:58 PM Author Report Share #590530 Posted December 10, 2015 at 04:58 PM Obrigado Vikcch, Vou tentar adaptar este código às minhas necessidades: Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click Dim input As String = list_device1.SelectedItem Dim output As String = New String((From c As Char In input Select c Where Char.IsDigit(c)).ToArray()) TextBox1.Text = output End Sub Um evento click de um botão extrai o item seleccionado da listbox e apresenta-o numa textbox. Penso que dará para o que preciso, mas sou todo ouvidos se houver uma forma melhor. Respondendo à tua pergunta, não existe qualquer separador entre o texto e os números. Fica aqui um exemplo: BACKWARD 1 Significa que o programa VB.NET dará instruções via serialPort para um robot se deslocar 1 metro à retaguarda (o programa VB:NET recebe a leitura dos encoders das rodas do robot). Consegues dar-me uma sugestão de código melhor do que o que tenho neste momento? Obrigado Link to comment Share on other sites More sharing options...
vikcch Posted December 10, 2015 at 06:59 PM Report Share #590533 Posted December 10, 2015 at 06:59 PM (edited) Acho que melhor é mesmo regex, tem que importar System.Text.RegularExpressions eu prefiro fazer manualmente... está aí tambem um exemplo Dim input As String = "BACKWARD 1" Dim output As String = Regex.Replace(input, "[\d]", String.Empty) MsgBox(output) output = String.Empty For Each c As Char In input If Not "0123456789".Contains(c) Then output &= c End If Next MsgBox(output) Edited December 10, 2015 at 07:00 PM by vikcch Link to comment Share on other sites More sharing options...
Nuno Teixeira Posted December 11, 2015 at 10:29 AM Author Report Share #590564 Posted December 11, 2015 at 10:29 AM Muito obrigado Vikcch, Vou testar o código e adapta-lo ao que pretendo. Cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now