Получить значение строки, переданной в качестве параметра

#vb.net #string

#vb.net #строка

Вопрос:

Мне нужно передать параметры моему подразделению / функции.

Когда передается параметр, значение в строке, я хотел бы получить значение, оцененное и отправленное как:

 Dim strParams As String = drRow(0)

' drRow is a row from DB Table. the value in drRow(0) =  
' "@FromDate=""" amp; Now.AddDays(-10).ToShortDateString amp; """amp;@ToDate=""" amp; Now.AddDays(-4).ToShortDateString "
  

Я хотел бы, чтобы это было преобразовано в:

 Dim strFinal as string 

strFinal = ProcessString(strParams)
  

Конечный результат должен быть:

 strFinal = "@FromDate=10/09/2011amp;@ToDate=10/15/2011"
  

Любые идеи, как я могу это сделать. Я получаю начальную строку из базы данных, мне нужно преобразовать в конечную строку, я не могу понять, как написать функцию «ProcessString».

Спасибо, что посмотрели.

Ответ №1:

«ЕСЛИ» вы можете изменить свой оператор параметра на что-то простое, например:

@FromDate=;-10;@ToDate=;-4

Затем вы можете сделать что-то вроде этого:

 Dim strParams As String = "@FromDate=;-10;@ToDate=;-4"
Dim value As String = String.Empty
Dim parts() As String = strParams.Split(";"c)
If parts.Length = 4 Then
  Dim fromDays As Integer
  Dim toDays As Integer
  If Integer.TryParse(parts(1), fromDays) AndAlso Integer.TryParse(parts(3), toDays) Then
    value = parts(0)   Now.AddDays(fromDays).ToShortDateString   parts(2)   Now.AddDays(toDays).ToShortDateString
  End If
End If

MessageBox.Show("Value = " amp; value)
  

Если это что-то более сложное, то вам придется начать разбор каждой части вашей строки с большим количеством операторов If и Select — вероятно, вам следует прислушаться к совету Джима Мишеля и попробовать другой подход.

Ответ №2:

Это конечный результат того, что я использовал на основе предложений.. Спасибо, ребята.

Public Function ProcessParameters(ByVal strParams As String) As String

     Dim arrParams() As String
    'strParams = "@FromDate=-10;amp;@ToDate=-4;amp;@CompanyID=1"
  

arrParams = strParams.Split(";")
Dim arrP() As String

     Dim strFinalParams As String = ""
    For Each strP As String In arrParams
        arrP = strP.Split("=")
        If arrP(0).ToString.EndsWith("Date") Then
            strFinalParams amp;= arrP(0) amp; "=" amp; Now.AddDays(arrP(1)).ToShortDateString
        Else
            strFinalParams amp;= arrP(0) amp; "=" amp; arrP(1)
        End If
    Next
    Return strFinalParams
End Function
  

}