拆分字符串但保留分隔符

时间:2012-11-22 11:32:39

标签: regex arrays vb.net string split

我有这个字符串:

  

S40102S40078S40079S40080S40053S40052S40051S40050

但我的代码是

Dim MyArray() As String = MyString.Split("S")

删除了S但是我想保留它,我已经尝试了RegEx但是我无法让它工作,任何帮助都非常感激。

感谢

3 个答案:

答案 0 :(得分:0)

您可以使用正向前瞻并在“S”之前拆分零长度匹配:(?=S)

我希望这适用于VB。

感谢@Oded的评论。为了避免在第一个S上分裂,您可以执行以下操作:(?=[^\a]S)

答案 1 :(得分:0)

尝试在S之前的数字之间添加分隔符,然后在该分隔符上拆分。例如

Dim MyArray() As String = Regex.Replace(MyString, "(\d)S", "$1-S").Split("-")

注意:VB.NET不是我的第一语言,所以请检查语法是否正确

答案 2 :(得分:0)

我认为正则表达式会对此有所帮助。像这样:

Dim input As String = "S40102S40078S40079S40080S40053S40052S40051S40050"
Dim regex As Regex = New Regex("([^S])*[S]")
Dim ms As MatchCollection = regex.Matches(input)
Dim MyArray() As String
Dim ctr As Integer = 0

'loop through them all
foreach(m As Match In ms)
{
    'assign to array
    MyArray(ctr) = m.Value

    'increase counter
    ctr += 1
}

这是未经测试的,并且是来自C#的端口,所以语法可能有点偏,但它非常接近。