0

次の形式の文字列があります。

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

ここでの私の要件は、演算子の後に中括弧内の値を分割し、=それらを文字列配列に格納することです。Substring()IndexOf()メソッドを使ってパーツを分割しようとしましたが、うまくいきました。しかし、正規表現を介してこれを実現するには、よりクリーンでエレガントな方法が必要でした。

私の要件を達成するための手がかりを持っている人はいますか?

4

4 に答える 4

2

完全な正規表現ソリューションは次のとおりです。

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(",")
于 2013-03-26T07:56:09.487 に答える
1

正規表現を使用して中括弧内の値を抽出してから、通常のSplit:を使用できます。

Regex.Match("[0:2]={1.1,1,5.1.2}", "{(.*)}").Groups(1).Value.Split(","c)
于 2013-03-26T07:53:46.100 に答える
0
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で入力したため、構文を簡単に確認できませんが、プリンシパルは適切である必要があります)。

編集:C#構文で動作する.netメソッドを表示するための反対票としてVBに更新されました。

于 2013-03-26T07:55:42.403 に答える
-1

正規表現を使用して必要な場合

Dim s() As String=Regex.match(str,"(={)(.*)(})").Groups(1).Tostring.split(',');
于 2013-03-26T07:58:21.203 に答える