分裂一个字符串

时间:2009-06-15 15:59:43

标签: asp.net vb.net

我有以下字符串:

http://pastebin.com/d29ae565b

我需要将每个值分开并将其放入数组中。通常它会由“.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)
遗憾的是,由于某种原因,空间丢失了。当我查看数组时,数字之间的所有空格都会丢失。为什么?????????

6 个答案:

答案 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(",")