Получить значение строки, которая передается как параметр - PullRequest
0 голосов
/ 19 октября 2011

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

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

Dim strParams As String = drRow(0)

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

Я хотел бы видеть это преобразовано в:

Dim strFinal as string 

strFinal = ProcessString(strParams)

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

strFinal = "@FromDate=10/09/2011&@ToDate=10/15/2011"

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

Спасибо за внимание.

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

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

@ 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 = " & value)

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

1 голос
/ 26 октября 2011

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

Public Function ProcessParameters(ByVal strParams As String) As String

    Dim arrParams() As String
    'strParams = "@FromDate=-10;&@ToDate=-4;&@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 &= arrP(0) & "=" & Now.AddDays(arrP(1)).ToShortDateString
        Else
            strFinalParams &= arrP(0) & "=" & arrP(1)
        End If
    Next
    Return strFinalParams
End Function

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...