2

基本的な分割文字列操作については知っていますが、VB.NET の初心者として、パラメーター (トークン) を使用して文字列を分割する便利な方法が存在するかどうかを知りたいと思います。
文字列はサイズと内容が異なる場合がありますが、常に同じスキーマ "[パラメーター]->値" を使用します。
このような:

[name] John [year]   1990 [gender]M[state] Washington[married] No[employed] No

この構文的に不適切な文字列を解析して、パラメーターと値のペアを取得するにはどうすればよいですか?

編集: コードの例、正規表現などをお願いします。

4

1 に答える 1

3

正規表現でこれを行うことができます:

Dim RegexObj As New Regex( _
    "\[         # Match an opening bracket"                         & chr(10) & _
    "(?<name>   # Match and capture into group ""name"":"           & chr(10) & _
    " [^[\]]*   # any number of characters except brackets"         & chr(10) & _
    ")          # End of capturing group"                           & chr(10) & _
    "\]         # Match a closing bracket"                          & chr(10) & _
    "\s*        # Match optional whitespace"                        & chr(10) & _
    "(?<value>  # Match and capture into group ""value"":"          & chr(10) & _
    " [^[\]]*?  # any number of characters except brackets"         & chr(10) & _
    ")          # End of capturing group"                           & chr(10) & _
    "(?=        # Assert that we end this match either when"        & chr(10) & _
    " \s*\[     # optional whitespace and an opening bracket"       & chr(10) & _
    "|          # or"                                               & chr(10) & _
    " \s*$      # whitespace and the end of the string"             & chr(10) & _
    ")          # are present after the current position", _
    RegexOptions.IgnorePatternWhitespace)
Dim MatchResults As Match = RegexObj.Match(SubjectString)
While MatchResults.Success
    parameter = MatchResults.Groups("name").Value
    value = MatchResults.Groups("value").Value
    ' do something with the parameter/value pairs
    MatchResults = MatchResults.NextMatch()
End While
于 2012-12-22T10:49:46.693 に答える