.NET FrameworkのStringBuilderクラスをVB6にて使用する
参考:MSDN .NET Framework クラス ライブラリ
文字列作成に強力な力を発揮するStringBuilderクラスをVB6に移植してみました。全てのメソッドに対応しているわけではありませんが、これでもSQL文の作成等にはかなりの力を発揮すると思います。
注意:このクラスはExecuteが勝手に作成したものであり、.NET Frameworkのものとは若干動作が異なります。
StringBuilder クラス
パブリック プロパティ
Length このインスタンスの長さを設定します。現在の長さ未満の長さを指定した場合は、このインスタンスが指定した長さまでに切り捨てられます。指定した長さが現在の長さを超える場合は、このインスタンスの文字列値の末尾に空白が埋め込まれます。
パブリック メソッド
Append 文字列をこのインスタンスの末尾に追加します
Insert 文字列をこのインスタンスの指定した文字位置に挿入します
Remove このインスタンスから、指定した範囲の文字を削除します
Replace このインスタンスに出現する指定文字をすべて、別に指定した文字に置換します
ToString このインスタンスをString型に変換します
サンプルドライバ
Dim aBuilder As New StringBuilder
With aBuilder
.Append "桜が散って、このように葉桜のころになれば、"
.Append "私は、きっと思い出します。"
.Remove 2, 3 '「散って」を削除
.Insert 19, "の父親" '「私」の後に「の父親」を挿入
.Replace "桜", "サクラ" '「桜」を「サクラ」に置換
.Length = 31 '文字長を31字に→「きっと」以後をカット
'こんなトリッキーな表現も可能
.Append("違いない").Insert(31, "思い出すに").Append "…。"
Debug.Print "Len:" & CStr(.Length) & " / " & .ToString
End With
Set aBuilder = Nothing
実行結果
Len:42 / サクラが、このように葉サクラのころになれば、私の父親は、きっと思い出すに違いない…。
ソース(クラス名:StringBuilder)
Option Explicit
'=============================================
'ClassName: StringBuilder
'Created By Execute
'2004/05/14
Private Const MyName As String = "StringBuilder"
'ローカルデータ
Private m_stringValue As String
'このインスタンスの長さを取得
Public Property Get Length() As Integer
Length = Len(m_stringValue)
End Property
'このインスタンスの長さを設定
'現在の長さ未満の長さを指定した場合は、このインスタンスが
'指定した長さまでに切り捨てられます。指定した長さが現在の
'長さを超える場合は、このインスタンスの文字列値の末尾に
'空白が埋め込まれます。
Public Property Let Length(ByVal Value As Integer)
If (Value < 0) Then
'エラー発生
Err.Raise 9999, MyName, "ArgumentOutOfRangeException"
'現在の長さ以下の長さを指定した場合
ElseIf (Value <= Me.Length) Then
'指定した長さまでに切り捨て
m_stringValue = Left(m_stringValue, Value)
'指定した長さが現在の長さを超える場合
Else
'末尾に空白を埋め込む
m_stringValue = m_stringValue & Space(Value - Me.Length)
End If
End Property
'クラスの初期化
Private Sub Class_Initialize()
'ローカルデータの初期化
m_stringValue = ""
End Sub
'Method: Append
'文字列をこのインスタンスの末尾に追加します
Public Function Append(ByVal Value As String) _
As StringBuilder
m_stringValue = m_stringValue & Value
Set Append = Me
End Function
'Method: ToString
'このインスタンスをString型に変換します
Public Function ToString() As String
ToString = m_stringValue
End Function
'Method: Remove
Public Function Remove(ByVal startIndex As Integer, _
ByVal Length As Integer) As StringBuilder
If (Length < 0 Or startIndex + Length > Me.Length) Then
'エラー発生
Err.Raise 9999, MyName, "ArgumentOutOfRangeException"
Else
m_stringValue = Left(m_stringValue, startIndex) & _
Right(m_stringValue, Me.Length - (startIndex + Length))
End If
Set Remove = Me
End Function
'Method: Insert
Public Function Insert(ByVal index As Integer, _
ByVal Value As String) As StringBuilder
If (index < 0 Or index > Me.Length) Then
'エラー発生
Err.Raise 9999, MyName, "ArgumentOutOfRangeException"
Else
m_stringValue = Left(m_stringValue, index) & _
Value & Mid(m_stringValue, index + 1)
End If
Set Insert = Me
End Function
ダウンロード:StringBuilder.cls
ダウンロード(サンプル付):StringBuilder.lzh
[ 戻る ]
このソースコードの著作権は、エグゼキュートが所持します。また、このソースコードはご自由にご利用できますが、それにより生じた直接的・間接的に生じた損害につきまして、弊社はいかなる責任も負いません。