当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2008年5月8日木曜日

スクリプト版@ReplaceSubString

今回はサンプルと違って、実用?できる関数である。
文字列の中身の一部分を変更したいという時に、@関数では@ReplaceSubStringを使うが、
スクリプトではそれに該当する関数がない。
クロスリファレンスでは、Mid関数となっているが、使い方が違うし、単体では実現できない。

ということで、@ReplaceSubString関数を実現するスクリプトの関数を用意した。
下記のサンプルの中のReplaceStringという関数である。
引数は@ReplaceSubString関数と同じようにしてあるので、簡単に使えると思う。

試してみてほしい。

Sub Click(Source As Button)
 Dim sValue As String
 Dim sFrom As String
 Dim sTo As String
 
 sValue = {ABCDEFG"HIJKLMN"OPQRSTU"VWXYZ,"}
 sFrom = """"
 sTo = ","
 
 Messagebox sValue, 0, "置換前"
 Call ReplaceString( sValue, sFrom, sTo )
 Messagebox sValue, 0, "置換後"
End Sub

Sub ReplaceString( sValue As String, sFrom As String, sTo As String )
 'sValueは、検索用文字列
 'sFromは、置換対象文字
 'sToは、置換後文字
 
 Dim i As Integer '置換対象文字位置
 Dim temp As String '作業用変数(検索文字列の一時格納)
 
 i = Instr( sValue, sFrom )
 Do While i <> 0
  temp = Left( sValue, i - 1 )
  temp = temp & sTo
  temp = temp & Right( sValue, Len( sValue ) - i - Len( sFrom ) + 1 )
  sValue = temp
  i = Instr( i + Len( sTo ), sValue, sFrom )
 Loop
End Sub

なお、R6.x以上であれば、Replace関数が用意されているのでそちらを使ってもよい。

0 件のコメント: