2013-11-04 57 views
0

我有像TE_2015-2016_UnKnown,TE_2014-2015_UnKnown,TE_2013-2014_UnKnown这样的字符串。我想在这个字符串中获得整数数组(2015,2016,2014,2015,2013,2014)。怎么做?整数数组的字符串值

编辑

我尝试这样

Dim x As String = "TE_2015-2016_UnKnown,TE_2014-2015_UnKnown,TE_2013-2014_UnKnown" 

     Dim y As String = String.Empty 

     For Each xstr As String In x.Split(",") 

      y &= xstr.Split("_")(1).Replace("-", ",") 

     Next 

     Dim xarr() As Integer = Array.ConvertAll(y.Split(","), Function(str) Int32.Parse(str)) 

它的返回输出

(0): "2015" 
(1): "20162014" 
(2): "20152013" 
(3): "2014" 

但我想

(0): "2015" 
(1): "2016" 
(2): "2014" 
(3): "2015" 
(4): "2013" 
(5): "2014" 

注意TEUnknown不是一个静态字符串。我给出了字符串示例。 “ - ”

+0

我们帮助那些自助。你有什么尝试?我们将帮助您调试您的代码,但我们不会为您编写代码。请张贴您已厌倦的任何代码,并详细说明您究竟遇到了什么问题。 –

+0

@MattClark我用for循环写了代码。但我想用out循环,然后只有我不发布代码 – Sathish

+0

如果你没有发布代码,我们不能帮你。请编辑你的问题以提供适当的信息。 –

回答

0

下面是使用的方法正则表达式:

Dim data As String = "TE_2015-2016_UnKnown,TE_2014-2015_UnKnown,TE_2013-2014_UnKnown" 

    Dim strNumbers As New List(Of String) 
    For Each m As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(data, "\d+") 
     strNumbers.Add(m.ToString) 
    Next 

    Dim numbers() As Integer = Array.ConvertAll(strNumbers.ToArray, Function(x) Int32.Parse(x)) 

    For Each number As Integer In numbers 
     Debug.Print(number) 
    Next 

编辑:另一种变体,而不使用循环...

Imports System.Text.RegularExpressions 
Public Class Form1 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     Dim data As String = "TE_2015-2016_UnKnown,TE_2014-2015_UnKnown,TE_2013-2014_UnKnown" 

     Dim numbers = (From n In Regex.Matches(data, "\d+") Select Integer.Parse(n.value)).ToArray 

     For Each number As Integer In numbers 
      Debug.Print(number) 
     Next 
    End Sub 

End Class 
+0

谢谢先生。它可能与外循环? – Sathish

0

与“_”和Split,然后选择那些可以被解析

Int32 value 
String s = "TE_2015-2016_UnKnown,TE_2014-2015_UnKnown,TE_2013-2014_UnKnown" 
s.Split(new ['-', '_']).Where(Function(w) Int32.TryParse(w, out value))