如何将字符串表达式转换为vb代码?

时间:2014-10-02 15:08:39

标签: vb.net

我有一个来自用户界面的字符串输出,如下所示

strFormula ="gridControlName.Rows(i).cells("C1").value *
               gridControlName.Rows(i).cells("C2").value"

如果我写代码

 dblRes=gridControlName.Rows(i).cells("C1").value * 
            gridControlName.Rows(i).cells("C2").value

它会给出结果..但由于它是一个字符串,我无法得到结果

如何从上面的字符串中删除双引号并获取在网格单元格中输入的值??

2 个答案:

答案 0 :(得分:0)

我不认为有一种'简单'的方法可以做到这一点,因为VB.Net没有像其他语言一样的“eval()”。但是,它确实支持运行时编译。以下是一些可以帮助您的文章:

两者都旨在比仅执行单行代码更健壮,允许用户输入自己代码的整个文本框,但应该给你一些方向。两者都包括样本项目。

答案 1 :(得分:0)

大家好,感谢您的更新..我使用您的概念和其他一些代码片段编写了我自己的函数。我发布了结果

Function generate(ByVal alg As String, ByVal intRow As Integer) As String Dim algSplit As String() = alg.Split(" "c)

    For index As Int32 = 0 To algSplit.Length - 1
        'algSplit(index) = algSplit(index).Replace("#"c, "Number")
        If algSplit(index).Contains("[") Then
            Dim i As Integer = algSplit(index).IndexOf("[")
            Dim f As String = algSplit(index).Substring(i + 1, algSplit(index).IndexOf("]", i + 1) - i - 1)
            Dim grdCell As Infragistics.Win.UltraWinGrid.UltraGridCell = dgExcelEstimate.Rows(intRow).Cells(f)
            Dim dblVal As Double = grdCell.Value
            algSplit(index) = dblVal
        End If

    Next

    Dim result As String = String.Join("", algSplit)
    'Dim dblRes As Double = Convert.ToDouble(result)
    Return result
End Function

再次感谢每一个人......期待未来一样