みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
例えば、以下のようなテキストフィールドがあり、最初の部の後に空欄があった場合は、その空欄をアンダーバーに置き換えたいです。
総務部 服部一郎 → 総務部_服部一郎
FileakerPro Ver17
Last edited by COLNAGO (2021-07-14 22:51:17)
Offline
Replace ( テキスト ; Position ( テキスト ; "部 " ; 1 ; 1 ) ; 2 ; "部_" )
↑
全角スペース
半角スペースも有れば、同じ様にして入れ子にすればいいですね。
Offline
チポさま
ご返信ありがとうございます。
言葉足らずですみません。
いただいた関数で処理をした場合、以下のテキストフィールドの値では、おかしな変換となります。
部の後ろにスペース(全角もしくは半角)が1回目にあった場合、部の後のスペースを_に変換したい仕様です。
↓全角か半角スペースあり
総務部 服部 一郎
↑全角か半角スペースあり
上記例の計算結果
Replace ( テキスト ; Position ( テキスト ; "部 " ; 1 ; 1 ) ; 2 ; "部_" )
部_部 服部 一郎
(正)
総務部_服部 一郎
Last edited by COLNAGO (2021-07-15 10:13:50)
Offline
ああ、
全角、半角スペースが混在していると面倒なことになりますね。
結果を
全角(または半角)スペースに統一してもいいでしょうか?
また、
総務課 服部 一郎
このようなのもあり得ますか?
Offline
Let (
[
pos1 = Position ( テキスト ; "部 " ; 1 ; 1 ) ; //2回目の"部 "は全角スペース
pos2 = Position ( テキスト ; "部 " ; 1 ; 1 ) ;
] ;
Case (
pos1 xor pos2 ; Replace ( テキスト ; Max ( pos1 ; pos2 ) ; 2 ; "部_" ) ;
pos1 and pos2 ; Replace ( テキスト ; Min ( pos1 ; pos2 ) ; 2 ; "部_" ) ;
テキスト
)
)
かな。
Last edited by Shin (2021-07-15 14:41:08)
Offline
チポさんの例から考えると(部以外の部署名の可能性)
部署名と氏名の間には必ずスペースがあるということだから
もしかすると、「最初のスペースをアンダーバーに」の方が真の要望なのかも?
そもそも部署名と氏名が別々のフィールドに入ってたのを連結した結果だったりはしないのかな。
チポさん
結果を全角(または半角)スペースに統一してもいいでしょうか?
>半角スペースで統一で良いです。
また、 総務課 服部 一郎このようなのもあり得ますか?
>前後のスペースは先に処理がされていますので、このパターンはありません。
Shinさんの方法で出来ましたが、チポさんの方法も教えてください。
よろしくお願いします
Last edited by COLNAGO (2021-07-15 12:03:20)
Offline
Shinさん
頂いた内容で以下のとおり調整して出来ました。
ありがとうございます。
Let (
[pos1 = Position ( テキスト ; "部 " ; 1 ; 1 ) ;
pos2 = Position ( テキスト ; "部 " ; 1 ; 1 ) ] ;
Case (
pos1 xor pos2 ;
Replace ( テキスト ; Max ( pos1 ; pos2 ) ; 2 ; "部_" ) ;
Min ( pos1 ; pos2 ) ;
Replace ( テキスト ; Min ( pos1 ; pos2 ) ; 2 ; "部_" ) ;
テキスト )
)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 517.11 KiB (Peak: 521.65 KiB) ]