Сгруппировать по парам все текстовые поля ввода vb.net 2010 - PullRequest
0 голосов
/ 06 декабря 2010

У меня есть текстовое поле, я хочу сгруппировать все входные данные по двум.

Ввод: E5D3DFOXJFUIOXZJDFCNIUEBSKDLFJCNESODFKJ

Я хочу стать: E5 D3 DF OX JF UI OX ZJ DF CN IU EB SK DL FJ CN ES OD FK J

Как я могу это сделать?

У меня есть эта функция, но она на самом деле не работает:

    For i As Integer = TextBox1.Text.Length - 2 To 2 Step -2
        TextBox1.Text = TextBox1.Text.Insert(i, " ")
    Next

Это дает мне что-то вроде этого:

E5D 3D FO XJ FU IO XZ JD FC NI UE BS KD LF JC NE SO DF KJ

или когда строка слишком длинная, это так:

E5D 3D FO XJ FU IO XZ JD F C NI UE BS K D LF JC NE SO DF KJ

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Спасибо вам за ответ, C # или VB.net это то же самое :-) в vb2010 это будет:

    Dim buffer As String = [String].Empty

    For i As Integer = 0 To TextBox1.Text.Length - 1 Step 2
        ' Exclude the case where 1 or 2 remaining chars here (no trailing space)
        If TextBox1.Text.Length - i > 2 Then
            buffer += TextBox1.Text.Substring(i, 2) & " "
        Else
            buffer += TextBox1.Text.Substring(i)
        End If
    Next
    TextBox1.Text = buffer

K.N.A.82.A.C.M

0 голосов
/ 06 декабря 2010

Пожалуйста, извините за переключение языка на C #. Не особенно элегантно, но следующий код должен работать как для четных, так и для нечетных длин строки

    string buffer = String.Empty;

    for (int i = 0; i < textBox1.Text.Length; i += 2)
    {
        // Exclude the case where 1 or 2 remaining chars here (no trailing space)
        if (textBox1.Text.Length - i > 2)
        {
            buffer += textBox1.Text.Substring(i, 2) + " ";
        }
        else
        {
            buffer += textBox1.Text.Substring(i);
        }
    }
    textBox1.Text = buffer;
...