過去の桐井戸端BBS (桐ver.8)
15415 あいまいな置換をしたい かず 2002/03/10-15:17
20年近く使ってきたのに、最近になって真剣に桐を使い始めました。
初歩的なことなのかもしれませんが、一通り調べた結果そうした例がなかったので、質問します。

検索ではワイルドカードを使用する部分検索などがありますが、
置換にはワイルドカードは指定できない様子です。
これに変わる曖昧な置換を行う方法はないのでしょうか。

例えば項目中にある()で囲まれた単語を()ごと全て消すとか。
エディターなどで置換するように(*)を指定したいの
ですが、指定方法が判りません。ご教示いただければ幸甚です。
15416 Re:あいまいな?置換の仕方は? 【多遊】 2002/03/10-16:27
記事番号15415へのコメント
かずさんさん。こんにちは。さっそく試してみましたが
>検索ではワイルドカードを使用する部分検索などがありますが、
>置換にはワイルドカードは指定できない様子です。
>これに変わる曖昧な置換を行う方法はないのでしょうか。

桐の項目置き換えにワイルドカードは使用できないみたいですね?

>例えば項目中にある()で囲まれた単語を()ごと全て消すとか。
>エディターなどで置換するように(*)を指定したいの
>ですが、指定方法が判りません。ご教示いただければ幸甚です。

私も試してみましたが
・項目置換で、#文字置換([],"("+*+")","") は、
計算式にあやまりがあります。で、失敗です。

つぎに
・変数管理で、「&STR」に、"("+*+")" と設定しておき
 項目置換で、#文字置換([],&STR,"") は、
これはなんにも置換されませんでした。

残念ながらワイルドカードを使用した方法はわかりませんが
「( )」で囲まれて部分を括弧ごと消す計算式をご紹介します。

そこで、基本的な方法ですが、作業項目を作成して、置き換える方法をご紹介します。

作業項目を、作成して、項目計算式を設定します
・#部分列([元項目],#文字位置([元項目],"("),
 #文字位置([元項目],")")-#文字位置([元項目],"(")+1)
答えを出したい項目で、
・#文字置換([元項目],[作業],"")

こんな感じでいかがですか。
もし作業項目を作成しないで一度で行うためには、上記2行を
まとめて

#文字置換([元項目],#部分列([元項目],#文字位置([元項目],"("),
 #文字位置([元項目],")")-#文字位置([元項目],"(")+1),"")

なお、元項目の場所に置き換える場合は
#文字置換([],#部分列([],#文字位置([],"("),
 #文字位置([],")")-#文字位置([],"(")+1),"")
で、けっこうです。

でもなにかワイルドカードを使用する方法がありそうですね。
もっと簡単な方法が他のかたから紹介されるかもしれません。
少々お待ち下さい

15417 Re:あいまいな?置換の仕方は? 【多遊】 2002/03/10-16:53
記事番号15416へのコメント
補足。
項目の値に、( )が2組み以上ある場合
・○○○○(△△△△△)○○○○(△△△△△)○○○○○○○○
上記の場合は2回行えば可能ですが、

・○○○(□□(△△△△△)□□□□)○○○○○○○○
のように、2重になってる場合や、先に )が、あって
その後ろに ( が、ある場合は、上記計算式では処理できません。

その場合、#文字位置([元項目],"("),や#文字位置([元項目],")")を
利用して、どちらが先にあるか、また
#文字数(#文字置換([元項目],"(",""))-#文字数(#文字置換([元項目],")",""))
などを利用されるをお奨めいたします。

15418 Re:あいまいな?置換の仕方は? KH 2002/03/10-23:46
記事番号15415へのコメント
>検索ではワイルドカードを使用する部分検索などがありますが、
>置換にはワイルドカードは指定できない様子です。
>これに変わる曖昧な置換を行う方法はないのでしょうか。
>
>例えば項目中にある()で囲まれた単語を()ごと全て消すとか。
>エディターなどで置換するように(*)を指定したいの

 私も年数ばかり経っていますが、同じですのでお望みの解答にはなっていないかも知れませんし、
回答が後ほどあるでしょうけど、
以下のように2度の置換で可能かと思います。

1. 検索する文字列をワイルドカードを使用するにチェックを入れて(*)とします。
  置換する文字列をそこではとうてい使われない文字、例えば、♀として置換してしまいます。

2. 次に、検索する文字列を♀にし、置換に計算式を使うにチェックを入れて、
  置換する文字列に、#文字置換([],"♀","")
  ではどうでしょう。

 この件は試していませんが、このような形で曖昧な置換をしていますのでコメントしました。
15435 Re:あいまいな?置換の仕方は? かず 2002/03/12-16:33
記事番号15416へのコメント
【多遊】さんご回答有り難うございました。

>#文字置換([元項目],#部分列([元項目],#文字位置([元項目],"("),
> #文字位置([元項目],")")-#文字位置([元項目],"(")+1),"")

この式を使わせていただこうとしたのですが、複数(*)を含んだ項目の場合、
一つ目の(*)を置換すると、そこまでで終わりになり、
()内が同じものだけは複数置換できます
が、中身の違う()は無視されるようなので、再伸でもご指摘のとおり、
入れ子にして連続する以外手がないのだろうかと思案中です。
ともかくワイルドカードが使用できないことだけは確認できてすっきり致しました。
まずはお礼のみ。

戻る