2013-11-04 75 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))