2017-06-08 5 views
1

私は高低を検索しましたが、これは重複した質問ではありません。 。)それらに埋め込まれています。VB NETのコードとしてテキストボックス(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にサンプルのドキュメント名のリビジョンを入力する必要があります。

REV-1

明らかに、テキスト値は、tbFNResultで必要な情報に応じてエンドユーザーが変更できます。例えば

、tbFNameExpression.Text = "左(tbFName.Text、3)" 次にtbFNameResultべき= "P05"

私は次のことを試みた場合:

Dim strFNExpression As String = tbFNameExpression.Text 
     tbFNameResult.Text = New DataTable().Compute(strFNExpression, Nothing) 

しかし、これは返さエラー: "式に未定義の関数呼び出しMid()が含まれています。"これを行うには https://www.theswamp.org/index.php?topic=33503.0

+2

簡単な方法はありません。正規表現を使用する方が良いかもしれない – SSS

答えて

0

簡単な方法:

は、私もここからの発現を処理するための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 
+0

ありがとう@SSS、ここで私の問題に答えます。 – GoodJuJu

+0

それは私が考えていなかった素晴らしい考えです。私は(?! - )REV(?= \。)を式として使用して、私が望むものを返すようにしました。あなたの答えを 'the'の回答としてマークしていませんが、誰かが私の文字列をコードとして実行する方法を返信してくれることを期待しています。 – GoodJuJu

+0

うれしかった。ハッピープログラミング! – SSS

関連する問題