掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
()内を置換し削除させるには? (ID:125536)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
今まで出ていないようなのでゴリゴリ版… バグ潜んでいると思います。 debug.? DeleteOverBracket("ab(abc(123)def(456)ghi)cd((456))e") Function DeleteOverBracket(ByVal s As String) As String Dim i As Long '検索結果位置 Dim Bracket As Long 'その時点での括弧の階層数 Dim sta As Long '")"の直後の位置 i = 0 Bracket = 0 sta = 1 '0文字目に")"があると仮定する Do i = FindString(s, i + 1, "(", ")") If i = 0 Then Exit Do Select Case Mid$(s, i, 1) Case "(" If Bracket = 0 Then '一番上層の開き括弧"("の直前までコピー DeleteOverBracket = DeleteOverBracket + Mid$(s, sta, i - sta) End If Bracket = Bracket + 1 Case ")" Bracket = Bracket - 1 If Bracket = 0 Then '全ての括弧が閉じたので位置を保存 sta = i + 1 End If End Select Loop '尻尾を追加 DeleteOverBracket = DeleteOverBracket + Mid$(s, sta, Len(s) - sta + 1) End Function Function FindString(ByVal s As String, ByVal p As Long, ParamArray c() As Variant) As Long Dim v As Variant Dim i As Long FindString = Len(s) + 1 For Each v In c i = InStr(p, s, v) If i <> 0 Then If i < FindString Then FindString = i End If End If Next If FindString = Len(s) + 1 Then FindString = 0 End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.