Ваш код перезаписывает файл, который вы уже написали, с одним пробелом (" "
) каждый раз.
Вы должны открыть файл только один раз и добавить к нему потоковую запись:
Using output = File.CreateText("file2.txt")
' Put the for loop here.
End Using
Есть и другие проблемы с вашим кодом. Во-первых, используйте For Each
вместо For
, это делает ваш код намного более простым и читаемым. Во-вторых, старайтесь по возможности избегать циклов For
. Например, вместо того, чтобы перебирать символы для вывода их по одному, просто создайте новую строку из массива char и напишите это:
Dim shuffledWord As New String(arr)
output.Write(shuffledWord)
Некоторые из ваших типов совершенно неверны, то есть вы используете String
местами вместо Char
. Вы должны всегда использовать Option Strict On
. Тогда компилятор не допустит такого кода.
Вы также должны предпочесть использовать каркасные методы, а не методы, специфичные для VB. Это облегчает понимание программистам на C #, а также упрощает перевод и изменение (то есть, используйте метод строк Split
вместо свободной функции, используйте ToCharArray
вместо приведения к Char()
… ).
Наконец, используйте значимые имена переменных. str
, str2
и arr
особенно загадочны, потому что они не сообщают читателю кода ничего интересного о переменных.
Sub Main()
Dim text As String = File.ReadAllText("File.txt")
Dim words As String() = str.Split(" "c)
Using output = File.CreateText("file2.txt")
For Each word In words
dim wordChars = word.ToCharArray()
For i As Integer = 0 To wordChars.Length - 1 Step 2
Dim tmp As Char = wordChars(i + 1)
wordChars(i + 1) = wordChars(i)
arr(i) = tmp
Next
Dim shuffledWord As New String(wordChars)
output.Write(shuffledWord + " ")
Console.Write(huffledWord + " ")
Next
End Using
Console.Read()
End Sub