892 Views
December 13, 23
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第38回は @Replace、@ReplaceSubstring と REM について
@ -notes knows community- 2022/08/10 @関数Talk 第38回 公開版 @ Talks around @Functions in Notes and Domino ✔ @Replace ✔ @ReplaceSubstring 阿部 覚 38th ✔ REM (tw:) @abesat
@ ひきつづき… @
@ @ReplaceSubstring で放談 @
@ 前回の復習…部分文字列の置き換えを行う関数でした @ReplaceSubstring ("Apple Pie":"Bananas":"Apple":"Apple Juice":"Nuts"; これが あったら "Apple"; "Orange") これに置き換えてね 戻り値の表示例 @ 元の文字列にAppleがあればOrangeに変わります Apple Pie も Orange Pie に Apple Juice も Orange Juice に変わっちゃいます
このページも前回スライドのパクリ復習です、 @ AppleがOrangeに、Apple Juice が Orange Juice に 変わるのはいいけど Apple Pie は例外だよ、そのままにしたいという場合 こうやって戻すことならできそうですね @ReplaceSubstring ("Apple Pie":"Bananas":"Apple":"Apple Juice":"Nuts"; "Apple":"Orange Pie"; "Orange":"Apple Pie") 戻り値の表示例 @
@ @Replace のときと同様に 置換前と置換後のリストは 同一順序のものどうしが対応しています @ReplaceSubstring ("A B C D E F G H I J K L M"; "B":"M"; "V":"W") 戻り値の表示例 @
@ したがって、楽屋ネタで恐縮ながら こんな例でも @ReplaceSubstring("I like OnTime."; "like":"Ontime":"."; "love":"Hayabusa":"!") @ 戻り値、わかりますよね?
@ そうです、こうなります! @ReplaceSubstring("I like OnTime."; "like":"Ontime":"."; "love":"Hayabusa":"!") 戻り値の表示例 ★大文字小文字の区別は存在します @
@ では、やはり同様に 置換前と置換後のリストの要素数が違ってたら? @ReplaceSubstring ("A B C D E F G H I J K L M"; "B":"M":"G"; "V":"W") 戻り値の表示例 @ 置換前の方が多い場合は、 あぶれた分は、置換後リストの最後のものになります
@ @ReplaceSubstring ("A B C D E F G H I J K L M"; "B":"M"; "V":"W":"X") 戻り値の表示例 置換後の方が多い場合は、 あぶれた分はやはり無視されました @
@ こんなこともやってみました @ReplaceSubstring ("A B C D E F G H I J K L M":""; "B":"M":""; "V":"W":"X") 戻り値の表示例 @ あくまで部分文字列の置換であるこの関数にとって ""は対象外のようです
@ これが@Replace だったら。。。 @Replace ("A B C D E F G H I J K L M":""; "B":"M":""; "V":"W":"X") 戻り値の表示例 @ 文字列全体を見比べて置換するので、 この例で実際に変換されるのは "" だけです
@ と、ここまで確認したところで @Replace と @ReplaceSubstring をあらためて 比べてみます @Replace @ReplaceSubstring 1 置換対象 全体 部分 2 置換前リストの数が置換 後より多いとき あぶれた分は""に置換 あぶれた分は置換後 リストの最後に合わ せる 3 置換後リストの数が置換 前より多いとき あぶれた分は無視 4 置換結果を後続のリスト でさらに置換 しない 5 おまけ "" も置換するよ @ する "" はありえ~ん!
@ しかし相違する部分は結局、 全体を置換する @Replace と 部分を置換する @ReplaceSubstring という 基本機能のちがいに由来するものだと思えます @Replace @ReplaceSubstring 1 置換対象 全体 部分 2 置換前リストの数が置換 後より多いとき あぶれた分は""に置換 あぶれた分は置換後 リストの最後に合わ せる 3 置換後リストの数が置換 前より多いとき あぶれた分は無視 あぶれた分は無視 4 置換結果を後続のリスト でさらに置換 しない 5 おまけ "" も置換するよ @ する "" はありえ~ん!
@ なお、@ReplaceSubstring の実際の使用シーンとしては 「特殊文字部分の変換」が多いと思います @ReplaceSubstring(PhoneNumber; ”-”:"(":")"; "") @ たとえばこちら👆は 電話番号からハイフンやカッコを取り除いています
@ さて、 これでお伝えしたいことはだいたい済んだんだけど まだページが余ってる?なあ。。 そういえばこのところ、 "re"を究めることになってたから。。 @
@ REM @ で放談
@ 以前にもSELECTなどを扱いましたが 式言語での「キーワード」も ヘルプ上で @関数の一覧に含まれています @
@ REM はこんな書式で 式の動作とは関係なくコメントを加えておくものですね @ 基本 REM に続いて「"」で囲んだコメントを 自由に入力します。 ただ、コメント内で「"」を使いたい時があり
@ たとえば式自体の一部を何等かの都合でREM文とし、 コメントアウトしようというとき 「"」で囲もうとすると、 もとの式に含まれる「"」を 「\"」に変更する必要が生じてしまいます @
@ 「{」「}」で囲む場合は、 そうした配慮が不要となります @
@ さて、同じことは REM だけでなく、通常の式内の文字列についても いちおう言えます 式を記述した当初だけは。。。 @
@ 設計要素を一度保存してから、再度開くと REMのほうはそのままなのに 式内の文字列は勝手に""で囲まれた形式に 変換されてしまいます @ あとからメンテナンスしづらいので これ、REM と同じ仕組みにしてくんないかなぁ… と思う次第です
@ 今回もお付き合い ありがとうございました 😀 @