我有以下字符串:
我需要将每个值分开并将其放入数组中。通常它会由“.split”完成。但我需要按此顺序拆分:0,50,100,200,400等。
有谁知道怎么做?请注意我需要在VB中执行此操作
换句话说,我需要它来读取从左到右的行。我没有问题分离每个数字,我只需要它按指定的顺序阅读它。
谢谢大家的建议。香港专业教育学院尝试了正则表达式,我忘了提到每行后有一个换行符。我不确定这是否会影响正则表达式,但无论如何,在我执行正则表达式之后,我得到以下顺序:0,6.65,84 ...... ??,35 ......等等
我没有收到上述所需的订单
预期结果:0,50,100,100,200,400,218,9.8,???,6.65,6.31等......
我将通过最初将字符串拆分为单独的行来遵循下面的一些建议。这段代码几乎可以做到:
Dim fields() As String
fields = calculationText.Split(vbCrLf)
遗憾的是,由于某种原因,空间丢失了。当我查看数组时,数字之间的所有空格都会丢失。为什么?????????
答案 0 :(得分:5)
听起来我需要两次拆分。逐行将文件读入数组,或者更好地读取List(Of String),然后遍历List中的每个“行”并根据空间进行后续拆分。
当您浏览每一行时,您可以将第一个元素添加到结果数组列表中。
编辑:由于您遇到了一些麻烦,请试用此代码,看看它是否适合您:
Dim lstResulst As New List(Of String)
Dim lstContent As New List(Of String)
Dim LineItems() As String
Dim objStreamReader as StreamReader
objStreamReader = File.OpenText(FILENAME)
While objStreamReader.Peek() <> -1
lstContent.Add(objStreamReader.ReadLine())
End While
objStreamReader.Close()
这会将每行的所有文件行读入List(Of String)。然后从那里你可以做到这一点:
For Each CurrLine As String In lstContent
LineItems = CurrLine.Split(Char.Parse(" "))
lstResults.Add(LineItems(0))
Next
这会将每个项目拆分成一个数组,您可以将拆分的第一项转储到一个新的List(Of String)中。您可以轻松地将其转储到Decimals列表或其他任何内容中,并简单地将CurrLine.Split包装在适当的转换方法周围。该行的其余项目也将在LineItems数组中可用。
答案 1 :(得分:3)
按行拆分,然后使用此RegEx匹配:
(\d+\.\d+)|(\?\?\?\?\?\?)
答案 2 :(得分:2)
看一下(没有复制/粘贴以查看它是如何写的),我认为你可以先使用换行符字符Split(),然后使用制表符字符拆分()该数组中的每个字符串。
编辑:哦,您基本上想要转动表格,然后按顺序返回结果。我现在正在编写测试代码,并且一旦完成就会发布它。 (不过,这将是C#。)
答案 3 :(得分:2)
如果您正在从文件中读取该数据,则可以备份步骤并使用ReadLine()
类中的StreamReader
方法。
代码看起来像这样:
Dim myReader as new StreamReader(strFilePath)
Dim myLines as new List(Of String)
While Not myReader.EndOfStream
myLines.Add(myReader.ReadLine())
end While
您的List(of String)将包含每行数据的一个String。
答案 4 :(得分:2)
您可以分别使用TextReader
读取每一行,并根据需要拆分字符串。
Function GetNumbers(reader As TextReader) As String()
Dim lst As New List(Of String)
Do While Not reader.EndOfStream
lst.AddRange(reader.ReadLine().Split(vbTab))
Loop
Return lst.ToArray()
End Function
答案 5 :(得分:1)
有点啰嗦绕过房子,但不同的倾斜,
您是否可以使用.Split分割行,然后使用RegEx替换空格+制表符,使用RegEx.Replace使用“/ s +”模式
或者如果你有一个长字符串中的数字,下面的代码(你可能需要稍微调整一下正则表达式以包含换行符)会给你一个值的数组(我认为)
Dim matchPattern As String = "\s+"
Dim patternMatch As New Regex(matchPattern)
Dim resultString As String = Regex.Replace("0.001 0.0002 3", matchPattern, ",")
Dim resultStrings() As String = resultString.Split(",")