2011-11-15 111 views

回答

7

我會扔我的帽子環:

Dim test As String = "abcdefgh" 
Dim results As New List(Of String) 

For i As Integer = 0 To test.Length - 1 Step 2 
    If i + 1 < test.Length Then 
    results.Add(test.Substring(i, 2)) 
    Else 
    results.Add(test.Substring(i)) 
    End If 
Next 

MessageBox.Show(String.Join(" ", results.ToArray)) 
+0

耶!它的工作原理!感謝您的幫助 現在我開始了其餘的項目! –

+0

+1對於答案...也用於標記問題VB.net! – MarkJ

+0

@minnow謝謝。是的,長度會比Count更好。啊,壞習慣。 – LarsTech

2

在C#中,你會做這樣的:

Dictionary<String, String> Split(String input) 
{ 
    if (input.Count % 2 == 0) 
    { 
     Dictionary<string, string> Pairs = new Dictionary(); 

     for (int L = 0, R = 1; L < input.Count && R <= input.Count; ++L, ++R) 
     { 
      Char 
       Left = input[L], 
       Right = input[R]; 

      Pairs.Add(
       Left.ToString(), 
       Right.ToString()); 
     } 
    } 

    else 
    { 
     throw new NotEvenException(); 
    } 

    return Pairs(); 
} 

void Main() 
{ 
    var Pairs = Split("ABCDEFGH"); 

    foreach(string Key in Split("ABCDEFGH")) 
    { 
     Console.Write("{0}{1}\n", Key, Pairs[Key]); 
    } 
} 


/* 
Output: 
AB 
CD 
EF 
GH 

*/ 

現在,我知道你在想什麼:這是不是我想要的是!但我說:實際上,至少有一部分。

因爲我認爲你在VB.net工作,所以你想要執行什麼的基本結構在上面的短片段中概述。

例如:方法Count(對象字符串)存在於C#和VB中。

希望它至少有一點幫助!

+0

我一直在視覺工作室vb工作 但感謝它幫助了一下 –

+0

好!雖然我不完全確定(我從來沒有在VB中工作過),但我認爲你可以簡單地將我的一小段代碼翻譯成VB,但仍然可以編譯它! –

3

以下允許奇數長度的字符串。如果字符串是零長度的,我不確定你想要做什麼,你會想要解決這個問題。

Dim src As String = "abcdef" 
    Dim size As Integer 
    If src.Length > 0 Then 
     If src.Length Mod 2 = 0 Then 
      size = (src.Length/2) - 1 
     Else 
      size = ((src.Length + 1)/2) - 1 
     End If 
     Dim result(size) As String 
     For i = 0 To src.Length - 1 Step 2 
      If i = src.Length - 1 Then 
       result(i/2) = src.Substring(i, 1) 
      Else 
       result(i/2) = src.Substring(i, 2) 
      End If 
     Next 
    End If 
+0

感謝您的回覆。我對代碼有點困惑,不知道它在做什麼XD –

+0

大聲笑,它是做什麼回答你的問題....我沒有測試代碼。 @ LarsTech的答案几乎相同,但使用List而不是數組,所以它更易於閱讀......並且我認爲它更好。 – minnow