2009年06月15日

Replace関数が有ったと思ったら駄目駄目だった!

ヘルプに書かれていないので、
OOo.Basic には Replace 関数が無いようです。

ただし、VBA の WorksheetFunction.SUBSTITUTE のように、
Calc 関数の SUBSTITUTE を呼び出して利用する事はできます。
( 参考: Calc 関数の利用方法

定例文で良いとはいえ、使う前に書かなきゃいけないコードが多いのは難です。

でも、Split / Join で代替式を簡単に組む事ができます。
    Join ( Split ( "ABCxyzDEFxyzPQRxyz", "xyz" ) , "1234" )

ちゃんと、"ABC1234DEF1234PQR1234" と変わりますね。


ここで、ふと思いました・・・
  『ヘルプに載っていないだけで、実は知らない内に実装されているんじゃ?』

試してみました♪
    Replace ( "ABCxyzDEFxyzPQRxyz", "xyz", "1234" )

動いた! やっぱり、有りました \(^o^)/

でも・・・・・ 結果が変 (・・?
    "ABC1234DE1234zP1234yz"

ABCxyzDEFxyzPQRxyz
│ ↓ │ │
ABC1234DEFxyzPQRxyz
│ ↓ │ │
ABC1234DE1234zPQRxyz
│↓ │ │
ABC1234DE1234zP1234yz

最初の『位置情報』を使い続けているという、
とっても恥ずかしい&お馬鹿な実装です。使えません _| ̄|○


( 2009/6/23 )
Replace関数のソースが閲覧できました。
「最初の『位置情報』を使い続けている」というロジックに
なっているのを確認しました。



お役に立ちましたら拍手して貰えると嬉しいです

addinbox at 23:38コメント(2)トラブル・バグ | マクロ・関数 

コメント一覧

1. Posted by たけおか ひとし   2011年11月10日 00:19
お疲れ様です。

StarSuite8では、使用できなかった気がします。
しかし
どのversionnからかはわかりませんが、なおってるようです。

OpenOffice.org 3.1.0
OOO310m11(Build:9399))
では

Print #FileNoOT,Replace ( "ABCxyzDEFxyzPQRxyz", "xyz", "1234" )

ABC1234DEF1234PQR1234
2. Posted by AddinBox   2011年11月10日 11:08
こんにちは。

https://issues.apache.org/ooo/show_bug.cgi?id=94895
https://issues.apache.org/ooo/show_bug.cgi?id=106272
https://issues.apache.org/ooo/show_bug.cgi?id=97002

issue を調べてみましたら、2009/1 頃には既にパッチが提案されていたみたいですね。
ただ、そのパッチが、どのバージョンで正式に組み込まれたのかは載っていないので判らないですね。

とりあえず、『最新版では修正済み』であると。

コメントする

名前
URL
 
  絵文字
 
 
記事検索
livedoor プロフィール



  • ライブドアブログ