「ブロック機能」のリニューアルについて

括弧()の中身の文字列をそれぞれ配列の文字列変数に設定したいと考えているのですが、Replaceを使えばいいのでしょうか?
また、Replaceは置き換える文字の検索の開始場所は設定できると思うのですが、置き換える文字の検索の終了の場所は設定できるのでしょうか?
例えば、(asdf)as(asdfe)as(sf)という文字列のasdf,asdfe,sfをそれぞれ配列を使って文字列変数として表したいのです。
nyuuryoku = Text1.Text
For i = 1 To Len(nyuuryoku)
If Mid(nyuuryoku, i, 1) = "(" Then
k = k + "と" + CStr(i)
j = j + 1
ElseIf Mid(nyuuryoku, i, 1) = ")" Then
m = m + "と" + CStr(i)
l = l + 1
End If
Next i
Text17.Text = "( は" + CStr(j) + "個" + k + "番目、 " + ") は" + CStr(l) + "個" + m + "番目"
For i = 1 To Len(nyuuryoku)
If Mid(nyuuryoku, i, 1) = "[" Then
kk = kk + "と" + CStr(i)
jj = jj + 1
ElseIf Mid(nyuuryoku, i, 1) = "]" Then
mm = mm + "と" + CStr(i)
ll = ll + 1
End If
Next i
Text2.Text = "[ は" + CStr(jj) + "個" + kk + "番目、" + "] は" + CStr(ll) + "個" + mm + "番目"
Dim kakkohajime(50) As Long
Dim kakkoowari(50) As Long
Dim kakkonakami(50) As String
For i = 1 To CStr(j)
kakkohajime(0) = 1
kakkohajime(i) = InStr(kakkohajime(i - 1), nyuuryoku, "(")
Next
For i = 1 To CStr(j)
kakkoowari(0) = 1
kakkoowari(i) = InStr(kakkohajime(CStr(j) + 1 - i), nyuuryoku, ")")
Next

このあとにkakkohajime(i)の場所からkakkoowari(i)の場所までの文字列をそれぞれkakkonakami(i)の配列の文字列にいれたいのです。
最後に、kakkonakami(i)をtextに表示したいと思っています。

教えて!goo グレード

A 回答 (1件)

Sub test1()



Dim nyuuryoku As String
Dim kakkonakami() As String
Dim j As Long
Dim i As Long

'対象の文字列を受け取る
''''nyuuryoku = Text1.Text
nyuuryoku = "(asdf)as(asdfe)as(sf)"

'区切り文字を指定して文字列を分割する
kakkonakami() = Split(nyuuryoku, "(")
'分解した件数を取得する
j = UBound(kakkonakami())

'分解した件数すべてについて判断を行う
For i = 0 To j
'分割された要素ごとに")"までを有効とする
If InStr(kakkonakami(i), ")") > 0 Then
'")"の直前までが有効
kakkonakami(i) = Mid(kakkonakami(i), 1, InStr(kakkonakami(i), ")") - 1)
End If
Next i

'区切り文字を指定して連結する
MsgBox Join(kakkonakami(), "これが区切り文字")
''''Text1.Text = Join(kakkonakami(), "これが区切り文字")

End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Replaceでは限界があったのですね。
こんなに短くなるとは思いませんでした。
どうもありがとうございました。

お礼日時:2004/12/16 07:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

教えて!goo グレード

人気Q&Aランキング