在字符串VB.net中拆分后检索所有内容

时间:2015-12-23 09:24:49

标签: vb.net

我需要在VB.Net中拆分后返回字符串的值。

字符串将是:

someexpression1 OR someexpression2 OR someexpression3 OR someexpression4 OR someexpression5

字符串不能包含3个以上的表达式,因此我需要在某些表达式后检索所有内容。

分割之后我需要以下"或者someexpression4或someexpression5",完整的字符串将始终是不同的长度所以我需要一些动态的东西来捕获字符串的最后部分。

2 个答案:

答案 0 :(得分:1)

如果没有关于你的分裂应该是如何danymic的更多信息,以下代码将涵盖您的要求:

'Some UnitTest
Dim toSplit As String = "someexpression1 OR someexpression2 OR someexpression3 OR someexpression4 OR someexpression5"
Dim actual = GetLastExpressions(toSplit)
Dim expected = "OR someexpression4 OR someexpression5"
Assert.AreEqual(expected, actual)

toSplit = "requirement OR is OR weird"
actual = GetLastExpressions(toSplit)
expected = ""
Assert.AreEqual(expected, actual)
'...

Private Function GetLastExpressions(expression As String, Optional splitBy As String = "OR", Optional numberToSkip As Integer = 3)
     Dim expr As String = ""
     Dim lExpressions As IEnumerable(Of String) = Nothing
     Dim aSplit = expression.Split({expression}, StringSplitOptions.None)
     If aSplit.Length > numberToSkip Then
         lExpressions = aSplit.Skip(numberToSkip)
     End If
     If lExpressions IsNot Nothing Then
         expr = splitBy & String.Join(splitBy, lExpressions)
     End If
     Return expr
End Function

答案 1 :(得分:-1)

向我的一位朋友发言,他建议这样做,并且工作正常;

                Dim sline As String = MyString
                Dim iorcount As Integer = 0
                Dim ipos As Integer = 1

                Do While iorcount < 17
                    ipos = InStr(ipos, sline, "OR")
                    ipos = ipos + 2
                    iorcount = iorcount + 1
                Loop
                MsgBox(Mid(sline, ipos))