このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

pickUpFromDataとxReplace

発言者:大沢右二
( Date Friday, March 06, 1998 13:49:49 )


こんにちは、Tanaka's OSAXにはいつもお世話になっております。

さて、次のようにpickUpFromDataとxReplaceを組み合わせて使うと
うまく置換されないようです。

set x to "abcdefg"
set y to pickUpFromData x startOf "c" endOf "f"
--ピックアップした文字列の確認
display dialog y
set z to xReplace x search y replace "x"
--置換後の確認
display dialog z

私の理解が正しければ(^^;),

y="cdef"     z="abxg"

となるとおもうのですが,y="cdef"     z="abcdefg"(=x)
となってしまいます。

pickUpFromDataを使わずに,

set x to "abcdefg"
set y to "cdef"
set z to xReplace x search y replace "x"
--置換後の確認
display dialog z

とすると,期待通りに,z="abxg"となります。

Tanaka's OSAXは最新の1.25を使っています。OSは8.1Jです。

田中求之 さんからのコメント
( Friday, March 06, 1998 14:08:20 )

pickUpFromData の返り値はリスト型ですので、

set y to pickUpFromData x startOf "c" endOf "f"

を実行すると、 y= {"cdef"} になっています。y = "cdef" ではありません。

Display Dialog の表示の際にはリスト -> String の変換が行われて表示
されていますが、xReplace のパラメーターとして渡した場合には、この変換は
行われません。

で、大石さんが望まれるような結果にするには、

set y to item 1 of (pickUpFromData x startOf "c" endOf "f")

としてください。

田中求之 さんからのコメント
( Friday, March 06, 1998 14:10:33 )

大石さんではなく、大沢さんでした。失礼しました。

猫の手 さんからのコメント
( Friday, March 06, 1998 14:18:26 )

set z to xReplace x search (y as string) replace "x"
でもいいですよね。

1.25っていつでたのですか?

大沢右二 さんからのコメント
( Friday, March 06, 1998 14:22:05 )

すばやい回答をありがとうございました。

リストを文字列に変換したところ,きちんと動作しました。

pickUpFromDataの用語説明をもう一度よく見てみたところ,
確かに,Result: list となっていました。よく確認もせず
安易に質問してしまい,申し訳ありませんでした。

田中求之 さんからのコメント
( Friday, March 06, 1998 17:47:06 )

>set z to xReplace x search (y as string) replace "x"
>でもいいですよね。

これだと、y に複数のアイテムが含まれていたときに、思っている結果には
ならないことがあります。

面倒なようでも、pickUpFrom の返したリストにいくつの item が含まれているか
チェックするか、最初のやつでいいと見切って処理するか (^_^;; にしてください。

1.25 は夕べ出ました。この後の定期メンテの際にページを更新します (^_^;;