【问题标题】:String split after a character字符串在一个字符后拆分
【发布时间】:2012-03-01 05:41:00
【问题描述】:

你好,我有一个这样的字符串

MRP^1^1~MRP|MRP+1^1^1~MRP+1|MRP+2^1^1~MRP+2|MRP+3^1^1~MRP+3|MRP+4^1^1~MRP+4

我想在单行操作中将其拆分并放入这样的数组中。

MRP
MRP+1
MRP+2
MRP+3
MRP+4

谁能帮帮我

【问题讨论】:

    标签: vb.net string .net-2.0


    【解决方案1】:

    这是另一种使用正则表达式的方法:)

    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
    
            '~~> Input string
            Dim strSample As String = "MRP^1^1~MRP|MRP+1^1^1~MRP+1|MRP+2^1^1~MRP+2|MRP+3^1^1~MRP+3|MRP+4^1^1~MRP+4"
    
            Dim pattern As String = "(MRP\+?[0-9]?)\^1\^1\~"
    
            Dim matches As MatchCollection = Regex.Matches(strSample, pattern)
    
            For Each match As Match In matches
                MessageBox.Show (Match.Groups(1).Value)
            Next
        End Sub
    End Class
    

    编辑

    还有其他方法(虽然有点啰嗦......)

    您可以使用 String.Replace 将“^1^1~”替换为“|”,这样您就只有 1 个分隔符和然后使用 Split 提取唯一值。但是就像我上面提到的那样,这有点啰嗦。 :)

    HTH

    席德

    【讨论】:

      【解决方案2】:

      虽然这行代码会为您提供您所寻求的结果,但它可能不是最好的方法,因为我不知道数据如何变化或定义它的原因,也许对您正在尝试的内容有更多了解来完成以及该字符串来自哪里可能会帮助我们为您提供更好的答案。

      Dim resultArray = myCurrentString.Split(New Char() {"~", "|"}).Where(Function(str) Not str.Contains("^")).ToArray
      

      【讨论】:

      • 我使用的是 2.0 找不到在哪里。
      • 哎呀,我在那里使用实体框架,我认为EF 不适用于 .NET 2.0,我认为它是 3.5。我几乎不怀疑在 2.0 的一行中会有一种方法可以做到这一点。你需要一个扣环。
      • 嘿,我明白了。但我是通过使用循环来做到的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2017-04-01
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多