我有這個字符串:分割字符串,但保持分隔符
S40102S40078S40079S40080S40053S40052S40051S40050
,但我的
Dim MyArray() As String = MyString.Split("S")
代碼刪除在S,但我想保持它,我已經試過RegEx,但我無法得到它的工作,任何幫助非常感激。
感謝
我有這個字符串:分割字符串,但保持分隔符
S40102S40078S40079S40080S40053S40052S40051S40050
,但我的
Dim MyArray() As String = MyString.Split("S")
代碼刪除在S,但我想保持它,我已經試過RegEx,但我無法得到它的工作,任何幫助非常感激。
感謝
您可以使用零長度匹配正向前查找和分裂的「S」前:(?=S)
我希望這部作品在VB。
謝謝@Oded您的評論。爲了避免在第一個S上分割,你可以這樣做:(?=[^\a]S)
第一個結果將是空的。所有其他結果在開始時將包含'S',這可能或不可能是OP的結果。 – Oded
謝謝。看我的編輯。 – davidrac
Oded,你的(?= S)爲我做了訣竅,並且在將它添加到ComobBox之前,我剛從數組中移除了第一個結果。謝謝 – user1295053
嘗試在S
之前的數字之間添加一個分隔符,然後在該分隔符上進行拆分。例如
Dim MyArray() As String = Regex.Replace(MyString, "(\d)S", "$1-S").Split("-")
注:VB.NET是不是我的第一語言,所以請檢查語法是否正確
我認爲,正則表達式會在這方面努力。就像這樣:
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#的端口,因此語法可能有點偏離,但它非常接近。
如果你知道你在分裂,你爲什麼需要保留它?你需要保留它在哪裏?每個「分裂」的開始?結束?都? – Oded