【发布时间】: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
谁能帮帮我
【问题讨论】:
你好,我有一个这样的字符串
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
谁能帮帮我
【问题讨论】:
这是另一种使用正则表达式的方法:)
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
席德
【讨论】:
虽然这行代码会为您提供您所寻求的结果,但它可能不是最好的方法,因为我不知道数据如何变化或定义它的原因,也许对您正在尝试的内容有更多了解来完成以及该字符串来自哪里可能会帮助我们为您提供更好的答案。
Dim resultArray = myCurrentString.Split(New Char() {"~", "|"}).Where(Function(str) Not str.Contains("^")).ToArray
【讨论】:
EF 不适用于 .NET 2.0,我认为它是 3.5。我几乎不怀疑在 2.0 的一行中会有一种方法可以做到这一点。你需要一个扣环。