2012-02-22 2 views
-1

Я никоим образом не опытный программист. Это задание, которое у меня есть, очень похоже на одноразовое, так что не чувствую себя плохо, чтобы дать мне ответы вместо того, чтобы указывать на меня в правильном направлении: PСплит (строка) Навигация - «Перейти к следующей подстроке»

Я искал столько, сколько могу, и могу Не находите, что мне нужно.

Мне просто нужно иметь возможность перейти к следующей подстроке строки. В этом случае «перейти к следующей подстроке» означает «перейти к следующей строке». Мне просто нужно сказать, что одна команда, и я буду в пути, но я не могу найти никаких следов.

Вот фрагмент кода с волшебной команды установлено:

Dim count As Integer 
Dim line As String 
Dim lines As String() = My.Computer.FileSystem.ReadAllText("C:\test.txt").Split(New Char() {vbCrLf}) 

For Each line In Lines 
    If line.Contains("#") 
     count = 0 
     **GO TO NEXT LINE** 
     Do Until line.Contains("#") 
      count = count + 1 
      **GO TO NEXT LINE** 
     Loop 
     Console.WriteLine(line & ", " & count) 
    End If 
Next 

Если я что-то не хватает, я должен быть в состоянии использовать текст, отформатированный как это:

#VERSE1 
Lyrics lyrics 
Lyrics lyrics 
#CHORUS1 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
#VERSE2 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
#CHORUS2 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
Lyrics lyrics 
#END 

И получать результат:

#VERSE1, 2 
#CHORUS1, 4 
#VERSE2, 3 
#CHORUS2, 5 
#END, 0 

Приносим извинения, если я одинок с отметки. Я просто собираю кусочки, которые я нашел из различных уроков.

Мне удалось получить все другие функции, которые мне нужны для работы с Google, но эта последняя задача заставила меня застрять.

Спасибо!

ответ

1

Я думаю, вам нужно сделать что-то подобное. То, что вы пытаетесь сделать, - это переместить свой индекс в двух направлениях. Вам нужно перебирать подстроки, пока не увидите проблему, возникшую после того, как вы получите сообщение For, которое переместит его за эту запись. Я создал пример, используя ваш файл, который, похоже, работает с использованием базового оператора For. Посмотрите, работает ли это для вас.

Sub Main() 
    Dim count As Integer 
    Dim x As Integer 
    Dim line As String 
    Dim lines As String() = My.Computer.FileSystem.ReadAllText("C:\test.txt").Split(New Char() {vbCrLf}) 

    For x = 0 To lines.Length - 1 
     If lines(x).Contains("#") Then 
      line = lines(x) 
      count = 0 
      x += 1 
      If x < lines.Length - 1 Then 
       Do Until lines(x).Contains("#") 
        count += 1     'Increment Counter 
        x += 1      'Point to next Line 
       Loop 
      End If 
      Console.WriteLine(line & ", " & count) 
      x -= 1        ' Set x back to the line before the # so the for statement will find correct line. 
     End If 
    Next 

    Console.ReadLine() 
End Sub 

Это выглядит результат:

#VERSE1 , 2 

#CHORUS1 , 4 

#VERSE2 , 3 

#CHORUS2 , 5 

#END , 0 
+0

Это _absolutely_ совершенен. Спасибо x1,000,000,000! – aener

+0

Рад помочь –

0
Dim count As Integer = 0 
    Dim line As String = String.Empty 
    Dim strSongSegment As String = String.Empty 
    Dim lines As String() = My.Computer.FileSystem.ReadAllText("C:\test.txt").Split(New Char() {vbCrLf}) 

    For Each line In lines 

     'Is this a new segment of the song? 
     If line.Contains("#") Then 

      'Make sure its not the first segment. 
      '(Note that .Length is a more modern approach.) 
      If Len(strSongSegment) > 0 Then 

       Console.WriteLine(strSongSegment & ", " & count.ToString()) 

      End If 

      'Keep track of this until we have the finaly tally for this segment. 
      strSongSegment = line 

      'Look down a couple lines of code to see why this is -1. 
      count = -1 

     End If 

     'Increment the cursor. 
     count = count + 1 

    Next 

    'Finally display the total for the last segment. 
    Console.WriteLine(line & ", " & count.ToString()) 
Смежные вопросы