我需要将参数传递给我的子/函数。
当参数传递时,字符串中的值,我想得到的值被评估并发送为:
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"
我有什么想法可以做到这一点。我从DB获取初始字符串,我需要转换为最终字符串,我无法弄清楚如何编写“ProcessString”函数。
感谢您的光临。
答案 0 :(得分:2)
“IF”您可以将参数语句更改为简单的语句:
@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语句解析字符串的每个部分 - 你应该注意Jim Mischel的建议并尝试不同的方法。
答案 1 :(得分:1)
这是我根据建议使用的最终结果..谢谢大家。
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
}