0

我有这个字符串:

S40102S40078S40079S40080S40053S40052S40051S40050

但我的代码

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

删除了 S 但我想保留它,我试过 RegEx 但我无法让它工作,非常感谢任何帮助。

谢谢

4

3 回答 3

0

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

我希望这适用于VB。

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

于 2012-11-22T11:41:34.973 回答
0

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

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

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

于 2012-11-22T11:50:24.813 回答
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# 的一个端口,因此语法可能有点偏离,但非常接近。

于 2012-11-22T13:33:34.093 回答