/ Published in: VB.NET
Expand |
Embed | Plain Text
Public Function ParseCommandLineArgs(ByVal args As String()) As Hashtable Dim argsTable As New Hashtable() If (args Is Nothing) OrElse (args.Length = 0) Then Return argsTable End If Dim arg As String Dim key As String Dim val As String Dim pos As Integer Dim tempVal As System.Text.StringBuilder Dim preChar As String = "" For i As Integer = 0 To args.Length - 1 arg = args(i) pos = arg.IndexOf("=") If pos > 0 Then key = arg.Substring(0, pos) pos = pos + 1 val = arg.Substring(pos, arg.Length - pos) ' 両側のダブルクォーテーションをはずす If (val.Length > 2) AndAlso (val.StartsWith("""") = True) AndAlso (val.EndsWith("""") = True) Then val = val.Substring(1, val.Length - 2) End If tempVal = New System.Text.StringBuilder() preChar = "" For j As Integer = 0 To val.Length - 1 If preChar = "\" Then If val.Substring(j, 1) = "\" Then ' \を発見 tempVal.Append("\") preChar = "" ElseIf val.Substring(j, 1) = """" Then ' "を発見 tempVal.Append("""") preChar = """" Else tempVal.Append("\") preChar = val.Substring(j, 1) tempVal.Append(preChar) End If Else If val.Substring(j, 1) <> "\" Then tempVal.Append(val.Substring(j, 1)) End If preChar = val.Substring(j, 1) End If Next val = tempVal.ToString() Else key = arg val = "" End If ' キーを大文字にする key = key.ToUpper() If argsTable.Contains(key) = False Then ' キーが存在しないとき argsTable.Add(key, val) End If Next Return argsTable End Function Private Function GetCommandLine1(ByVal args() As String) As Boolean 'コマンドラインの引数を受け取る Dim _ArgsTable As New Hashtable _ArgsTable = ParseCommandLineArgs(args) If _ArgsTable IsNot Nothing AndAlso _ _ArgsTable.Keys.Count > 0 AndAlso _ _ArgsTable.Contains("KEY") = True Then Return String.IsNullOrEmpty(_ArgsTable("KEY").ToString()) Else Return False End If End Function
You need to login to post a comment.
