2015-08-24 2 views
0

Мне нужно разобрать строку, чтобы получить в ней определенное значение.Эффективный способ получить часть строки в vb.net

Вот пример строки мне нужно разобрать: "@MSG 12,9: NINJUTSU"

Здесь мне нужно получить значение 12. Порядок значения не изменится, что означает, что я всегда буду нацеливать первое число в строке; однако длина строки (12, 9, 58) является переменной (но никогда не отрицательной), и сообщение (NINJUTSU) также меняется.

До сих пор я продолжу так:

Dim tempErrorList As List(Of String) = errorMsg.Split(New Char() {":"}).ToList() 

Dim listErr As List(Of String) = tempErrorList(0).Split(New Char() {","}).ToList() 

Dim errCode As List(Of String) = listErr(0).Split(New Char() {" "}).ToList() 

Однако мне не нравится, потому что из 3-х разделений, необходимых для получения значений. Я не знаю, как я мог сделать это за один выстрел или меньше операций?

+1

Звучит как работа для регулярного выражения. – Blackwood

+0

Да, ну был этот ответ Regex, который предоставил информацию, но я не знаю, почему пользователь удалил свой пост ... – hsim

ответ

2

Как и в случае с удаленным ответом, вы можете использовать String.Split так: errorMsg.Split(" ,:".ToCharArray()), который делает то, что вы делаете выше, но с одним вызовом функции.

errorMsg.Split(" ,:".ToCharArray())(1) даст вам "12", в котором вы нуждаетесь.

В качестве альтернативы вы можете использовать комбинации String.SubString() с String.IndexOf(), но логика может стать громоздкой и непрозрачной. String.Split Alternatives (MSDN) дает более подробную информацию об этом подходе.