我想将一个包含多行的字符串拆分为新字符串。
因为似乎人们在这里不了解我的问题还有一些进一步的信息:
我从XML文件中读取值到字符串中。其中一些字符串计算多行。现在我需要一个新字符串(变量)上的每一个字符串值,以便我可以告诉荷马喝啤酒并告诉莱尼上床睡觉而不是告诉整个团队去睡觉。 (希望这个故事可以帮助你:D)
为了保持这个简单,我将为这个样本定义一个“静态”字符串。
我将把我的三次尝试放在下面。我很想听听他们有什么问题。我还尝试使用lists
和enums
我可以分割字符串,但没有定义新字符串。
但我认为对我的问题有一个更简单的解决方案...
Dim team As String = "Simpson, Homer" & vbCrLf & "Leonard, Lenny" & vbCrLf & "Carlson, Carl"
1
Dim objReader As New StringReader(team)
Dim tm() As String
Dim i As Integer = 1
Do While objReader.Peek() <> -1
tm(i) = objReader.ReadLine() & vbNewLine
i = i + 1
Loop
Dim i As Integer = 0
For Each Line As String In team.Split(New [Char]() {CChar(vbTab)})
Dim tm(i) As String = ReadLine(team, i)
i = i + 1
Next
3
Dim tm() As String
Dim i As Integer = 0
Dim objReader As New StringReader(team)
Do While objReader.Peek() <> -1
tm(i) = ReadLine(team, i)
i = i + 1
Loop
和2.和3中使用的函数。
Public Function ReadLine(ByVal sFile As String, Optional ByVal nLine As Long = 1) As String
Dim sLines() As String
Dim oFSO As Object
Dim oFile As Object
On Error GoTo ErrHandler
oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(sFile) Then
oFile = oFSO.OpenTextFile(sFile)
sLines = Split(oFile.ReadAll, vbCrLf)
oFile.Close()
Select Case Math.Sign(nLine)
Case 1
ReadLine = sLines(nLine - 1)
Case -1
ReadLine = sLines(UBound(sLines) + nLine + 1)
End Select
End If
ErrHandler:
oFile = Nothing
oFSO = Nothing
End Function
提前感谢任何共同的想法。
答案 0 :(得分:1)
实际上我的问题很简单。对不起,如果我引起了混乱。
Module Module1
Dim team As String = "Simpson, Homer" & vbCrLf & "Leonard, Lenny" & vbCrLf & "Carlson, Carl"
Sub Main()
Dim tm As String() = team.Split(vbLf)
'Test
Console.WriteLine(tm(0)) 'Homer
Console.WriteLine(tm(1)) 'Lenny
Console.WriteLine(tm(2)) 'Carl
End Sub
End Module