我绝不是一位经验丰富的程序员。我的这项任务很可能是一次性的,所以不要因为给我答案而不是指向正确的方向而感到难过:P
只要我能忍受,我就一直在寻找,而且找不到我想要的东西。
我只需要能够移动到字符串的下一个子串。 在这种情况下,“转到下一个子串”等同于“转到下一行”。 我只需要被告知一个命令,我将在路上,但我找不到任何痕迹。
以下是安装了magic命令的代码片段:
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
如果我疯狂地离开,我道歉。我只是把我从各种教程中找到的点点滴滴放在一起。
我已经设法获得了我需要单独使用谷歌搜索所需的所有其他功能,但最后一项任务让我陷入困境。
谢谢!
答案 0 :(得分: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
答案 1 :(得分: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())