簡體   English   中英

用於拆分字符串並將其添加到Array的正則表達式

[英]Regular expression for splitting a string and add it to an Array

我有一個字符串,格式如下:

[0:2]={1.1,1,5.1.2}

我的要求是在=運算符之后將值括在花括號內,並將它們存儲到字符串數組中。 我試圖通過使用Substring()IndexOf()方法來分割部分,並且它有效。 但我需要一種更清潔,更優雅的方式來通過正則表達式實現這一目標

有沒有人有線索來達到我的要求?

這是您完全的RegEx解決方案:

Dim input As String = "[0:2]={1.1,1,5.1.2}"

Dim match = Regex.Match(input, "\[\d:\d\]={(?:([^,]+),)*([^,]+)}")

Dim results = match.Groups(1).Captures.Cast(Of Capture).Select(Function(c) c.Value).Concat(match.Groups(2).Captures.Cast(Of Capture).Select(Function(c) c.Value)).ToArray()

不要認為它比標准拆分更具可讀性:

Dim startIndex = input.IndexOf("{"c) + 1
Dim length = input.Length - startIndex - 1
Dim results = input.Substring(startIndex, length).Split(",")

您可以使用正則表達式提取花括號內的值,然后使用普通的Split

Regex.Match("[0:2]={1.1,1,5.1.2}", "{(.*)}").Groups(1).Value.Split(","c)
Dim s As String = "[0:2]={1.1,1,5.1.2}";

Dim separatorChar as char = "="c;
Dim commaChar as char = ","c;
Dim openBraceChar as char = "{"c;
Dim closeBraceChar as char = "}"c;

Dim result() as String = 
  s.Split(separatorChar)(1)
   .trim(openBraceChar)
   .trim(closeBraceChar)
   .split(commaChar);

(假設它有效!在iPad上鍵入,因此無法輕松驗證語法,但校長應該是合理的)。

編輯:更新為VB,因為在c#語法中顯示了工作的.net方法。

如果你想使用正則表達式

Dim s() As String=Regex.match(str,"(={)(.*)(})").Groups(1).Tostring.split(',');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM