1

次のような変数があります。

var = "word1 (should be replaced by word1)"

word1 を単独で取得する必要があり、単語である場合もありますが、常に (*) が後に続きます。() 記号の間のテキストを削除し、() を削除してから、最後の単語の後のスペースを削除する方法はありますか?

それについて行く方法がわからない。

4

3 に答える 3

1

SPLIT関数を使用します。

arrayVar2 = split(var, "(" )

これで、2つの要素を持つ配列ができました。

2番目の要素を分割します

arrayVar3 = split( arrayVar2[1], ")" )

次に参加します:

out = arrayVar2[0] & arrayVar3[1]

文字列に角かっこが1つしかない限り、これは機能します。

別の方法は正規表現ライブラリを利用することですが、それはより長い答えです。それほど効率的ではありませんが、より複雑な文字列を処理する必要がある場合は、より良いでしょう。


更新:私はおそらく求められた質問よりも少し進んだ。私のソリューションでは、括弧で囲まれたテキストが確実に削除されます。括弧で囲まれたテキストの後のテキストも保持されます。

于 2012-05-18T21:49:09.957 に答える
1

このような?

Sub Sample()
    Dim sVar As String
    Dim MyAr() As String

    sVar = "word1 (should be replaced by word1)"

    MyAr = Split(sVar, "(")

    Debug.Print MyAr(0)
End Sub

編集

上記のコードはさらに短縮できます

Sub Sample()
    Dim sVar As String
    sVar = "word1 (should be replaced by word1)"
    Debug.Print Split(sVar, "(")(0)
End Sub
于 2012-05-18T21:39:36.707 に答える
1

最も簡単なのは次のとおりです。

var = Trim(Mid(var, 1, InStr(var, "(") - 1))

InStr「(」が最初に出現したインデックスを返します。「(」が保持する位置を割り引くために 1 を減算します。

Midは、文字列を位置 1 の最初の文字から、 によって返されるインデックスまで切り取りますInStr

次にTrim、末尾のスペースを削除します。

于 2012-05-18T21:40:36.210 に答える