#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
}