我必须解析一个字符串以获取其中的特定值。
以下是我需要解析的字符串示例:"@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次分割。我不知道如何在一次或更少的操作中做到这一点?
答案 0 :(得分:2)
与已删除的答案类似,您可以像select * from t1 where "key1" = "value1"
一样使用String.Split
:errorMsg.Split(" ,:".ToCharArray())
执行上述操作,但只需一个函数调用。
errorMsg.Split(" ,:".ToCharArray())(1)
会为您提供所需的"12"
。
或者,您可以使用String.SubString()
与String.IndexOf()
的组合,但逻辑可能变得笨拙且不透明。 String.Split Alternatives (MSDN)提供了有关此方法的更多详细信息。