String 在VB NET中以代码形式运行文本框中的字符串(包含Mid和InStrRev函数)

String 在VB NET中以代码形式运行文本框中的字符串(包含Mid和InStrRev函数),string,vb.net,text,expression,String,Vb.net,Text,Expression,我已经到处搜索,不认为这是一个重复的问题,因为我发现的所有示例都没有嵌入函数(mid、InstrRev等) 我有一个包含3个文本框的表单(tbFName、tbFNameExpression、tbFNameResult) tbFName.Text包含一个示例文件名,可由最终用户更改: P05-158-4J-RM-001-REV-1.xlsx tbFNameExpression.Text包含一个字符串(可由最终用户更改),我希望作为代码运行: Mid(tbFName.Text,InStrRev(tb

我已经到处搜索,不认为这是一个重复的问题,因为我发现的所有示例都没有嵌入函数(mid、InstrRev等)

我有一个包含3个文本框的表单(tbFName、tbFNameExpression、tbFNameResult)

tbFName.Text包含一个示例文件名,可由最终用户更改:

P05-158-4J-RM-001-REV-1.xlsx

tbFNameExpression.Text包含一个字符串(可由最终用户更改),我希望作为代码运行:

Mid(tbFName.Text,InStrRev(tbFName.Text,“-REV”)+1,5)

这将使用示例文档名称中的修订填充tbFNameRev.Text

第1版

显然,文本值可以由最终用户更改,具体取决于tbFNResult中需要的信息

例如,如果tbFNameExpression.Text=“Left(tbFName.Text,3)”,则tbFNameResult应该=“P05”

我尝试了以下方法:

Dim strFNExpression As String = tbFNameExpression.Text
        tbFNameResult.Text = New DataTable().Compute(strFNExpression, Nothing)
但这会返回错误: “表达式包含未定义的函数调用Mid()。”

我还尝试了使用CodeDom处理表达式的函数:
要做到这一点并不容易。您可以尝试正则表达式:

tbFName.Text = "P05-158-4J-RM-001-REV-1.xlsx" 'Want to extract "REV-1"
tbFNameExpression.Text = "REV-."
tbFNameResult.Text = System.Text.RegularExpressions.Regex.Match(tbFName.Text, tbFNameExpression.Text).Value

要做到这一点并不容易。您可以尝试正则表达式:

tbFName.Text = "P05-158-4J-RM-001-REV-1.xlsx" 'Want to extract "REV-1"
tbFNameExpression.Text = "REV-."
tbFNameResult.Text = System.Text.RegularExpressions.Regex.Match(tbFName.Text, tbFNameExpression.Text).Value

要做到这一点并不容易。使用regexes可能会更好—这不是一种简单的方法。您最好使用regexesThanks@SSS,这确实解决了我的问题。这是一个我没有想到的好主意。我使用(?!-)REV(?=\)作为表达式来返回我想要的内容。我还没有将您的答案标记为“the”答案,因为我仍然希望有人会回答如何以代码形式运行我的字符串。很高兴这对您有所帮助。快乐编程!谢谢@SSS,这确实回答了我的问题。这是一个我没有想到的好主意。我使用(?!-)REV(?=\)作为表达式来返回我想要的内容。我还没有将您的答案标记为“the”答案,因为我仍然希望有人会回答如何以代码形式运行我的字符串。很高兴这对您有所帮助。快乐编程!