繁体   English   中英

解析此示例字符串

[英]Parsing this example string

我正在尝试将以下字符串拆分为子字符串

Dim value as String = "+1.0    A0   -256   B0  -2823" 'this is a line from a txtfile

我想将字符串拆分为以下3个子字符串。

Dim value1  as String= "+1.0"
Dim A0 as String = "-256" 
Dim B0 as String = "-2823"

字符串始终采用以下格式:

+ ## A0 #### B0 ###

我知道我可以配合使用实现它value.Replacevalue.Substring ,但我不知道究竟怎么了。

我已经尝试过类似的东西,但是没有用

value1 = Value.Substring(0, "A0".IndexOf("A0"))

您可以在此处针对两个字符串( A0B0 )使用String.Split ,这是我认为最清晰的解决方案:

Dim value as String = "+1.0 A0 -256 B0 -2823"
Dim values = value.Split({ " A0 ", " B0 " }, StringSplitOptions.None)

NET包含强大的String Split方法。 源由空格分隔,因此在其上进行分割并从结果中获取元素0、2和4:

如前所述,如果/当读取的行之间在项目之间有一个空格:

Dim value As String = "+1.0 A0 -256 B0 -2823"

Dim split = value.Split(" "c)
Dim val1 = split(0)            ' +1.0
Dim A0 = split(2)              ' -256
Dim B0 = split(4)              ' -2823

如果/当可以有多个空格时(如顶部代码示例中所示),关于删除它们的评论仍将允许String.Split

Dim value As String = "+1.0   A0          -256    B0    -2823"

Dim tmp = value.Replace(" ", "")    ' remove spaces, preserve original just in case
tmp = tmp.Replace("A0", " ")        ' replace A0 with space
tmp = tmp.Replace("B0", " ")
Dim split = tmp.Split(" "c)         ' split

Dim val1 = split(0)                 ' grab info
Dim A0 = split(1)
Dim B0 = split(2)

您确定不会在字符串中的任何字符都可以用来替换A0和B0。 由于我们只是删除了空格,所以这似乎是最合逻辑的。

第一次尝试时您处在正确的位置。 您只需要使用带有值的实际字符串来查找项目的位置。 由于您的空格数可能未知,因此需要使用Trim删除空格:

    Dim value As String = "+1.0    A0   -256   B0  -2823" 'this is a line from a txtfile

    Dim value1 As String = value.Substring(0, value.IndexOf(" "c))
    Dim aPos As Integer = value.IndexOf("A0") 'Find the position of "A0" in the string
    Dim bPos As Integer = value.IndexOf("B0") 'Find the position of "B0" in the string
    Dim A0 As String = value.Substring(aPos + 2, bPos - (aPos + 2)).Trim
    Dim B0 As String = value.Substring(bPos + 2).Trim

如果要拆分,请尝试拆分功能;)

拆分(表达式作为字符串,定界符作为字符串)作为string()

您想用“”分割表达式,并从结果数组中获取第1,第3和第5个元素(第2个为“ A0”,第4个为“ B0”),因此您的代码应类似于:

Option base 0    
' so we start counting at 0

Dim results as String()
results = Split(value," ")
value1 = results(0) 
A0 = results(2)
B0 = results(4)

根据我的评论,使用替换和拆分

String s = "+1.0 A0 -256 B0 -2823";
            s = s.Replace("A0", "").Replace("B0", "");
            String[] allNumbers = s.Split(' ');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM