1

角かっこで囲まれた値を抽出したいと思います。

text = "{said}、{var2}、{var3}の男

openingParen = InStr(text, "{")
closingParen = InStr(text, "}")
enclosedValue = Mid(text, openingParen + 1, closingParen - openingParen - 1)

phrasevariable1.Value = enclosedValue
phrasevariable2.Value = enclosedValue
phrasevariable3.Value = enclosedValue

このコードは最初の値を抽出するためにのみ機能します。各変数を抽出し、それに応じてテキストボックス1->nに配置する方法があります。

4

3 に答える 3

5

不明な数の候補トークンに対して正規表現を使用できます。

Dim matches As Object
Dim Re As Object: Set Re = CreateObject("vbscript.regexp")
Dim count As Long

Re.Pattern = "{(.*?)}"
Re.Global = True
Set matches = Re.Execute("The man who {said} and also {var2} as well as {var3}")

count = matches.count
For i = 0 To count - 1
    MsgBox matches(i).submatches(0)
Next

(事前バインディングのためにMicrosoft VBScript 正規表現への参照を追加します)

于 2012-10-10T15:40:42.720 に答える
3

任意の数の一致を許可する別の方法:

Const stri As String = "The man who {said} and also {var2} as well as {var3}"
Dim sp

sp = Filter(Split(Replace(Chr(13) & stri, "}", "{" & Chr(13)), "{"), Chr(13), False)
于 2012-10-10T15:45:11.527 に答える
1

括弧内に常に 3 組のテキストがあると仮定すると、配列変数を作成splitし、テキスト文字列で使用して値を取得します。

Dim myArray
myArray = Split(text, "{")

phasevariable1.Value  = Left(myArray(1), InStr(myArray(1), "}") - 1)
phasevariable2.Value  = Left(myArray(2), InStr(myArray(2), "}") - 1)
phasevariable3.Value  = Left(myArray(3), InStr(myArray(3), "}") - 1)
于 2012-10-10T15:32:21.867 に答える