Разделение строки на пары - PullRequest
5 голосов
/ 15 ноября 2011

Как бы я продолжил разбивать строку на пары букв в VB?

например: abcdefgh

разделить на: ab cd ef gh

Ответы [ 3 ]

8 голосов
/ 15 ноября 2011

Я брошу свою шляпу в кольцо:

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))
3 голосов
/ 15 ноября 2011

Следующее допускает строки нечетной длины. Если строка нулевой длины, я не уверен, что вы хотели бы сделать, вы захотите заняться этим делом.

    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
2 голосов
/ 15 ноября 2011

В 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 (объекта String) существует как в C #, так и в VB.

Надеюсь, он хотя бы немного поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...