次のような変数があります。
var = "word1 (should be replaced by word1)"
word1 を単独で取得する必要があり、単語である場合もありますが、常に (*) が後に続きます。() 記号の間のテキストを削除し、() を削除してから、最後の単語の後のスペースを削除する方法はありますか?
それについて行く方法がわからない。
SPLIT関数を使用します。
arrayVar2 = split(var, "(" )
これで、2つの要素を持つ配列ができました。
2番目の要素を分割します
arrayVar3 = split( arrayVar2[1], ")" )
次に参加します:
out = arrayVar2[0] & arrayVar3[1]
文字列に角かっこが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
最も簡単なのは次のとおりです。
var = Trim(Mid(var, 1, InStr(var, "(") - 1))
InStr
「(」が最初に出現したインデックスを返します。「(」が保持する位置を割り引くために 1 を減算します。
Mid
は、文字列を位置 1 の最初の文字から、 によって返されるインデックスまで切り取りますInStr
。
次にTrim
、末尾のスペースを削除します。