初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-07-14 22:20:56

COLNAGO
Member

特定文字の後に一文字追加

例えば、以下のようなテキストフィールドがあり、最初の部の後に空欄があった場合は、その空欄をアンダーバーに置き換えたいです。


総務部 服部一郎 → 総務部_服部一郎

FileakerPro Ver17

Last edited by COLNAGO (2021-07-14 22:51:17)

Offline

#2 2021-07-15 08:59:38

チポ
Member

Re: 特定文字の後に一文字追加

Replace ( テキスト ; Position ( テキスト ; "部 " ; 1 ; 1 ) ; 2 ; "部_" )
                                                               ↑
                                                        全角スペース

半角スペースも有れば、同じ様にして入れ子にすればいいですね。

Offline

#3 2021-07-15 09:55:33

COLNAGO
Member

Re: 特定文字の後に一文字追加

チポさま


ご返信ありがとうございます。

言葉足らずですみません。
いただいた関数で処理をした場合、以下のテキストフィールドの値では、おかしな変換となります。
部の後ろにスペース(全角もしくは半角)が1回目にあった場合、部の後のスペースを_に変換したい仕様です。


      ↓全角か半角スペースあり
総務部 服部 一郎
   ↑全角か半角スペースあり


上記例の計算結果
Replace ( テキスト ; Position ( テキスト ; "部 " ; 1 ; 1 ) ; 2 ; "部_" )

部_部 服部 一郎

(正)
総務部_服部 一郎

Last edited by COLNAGO (2021-07-15 10:13:50)

Offline

#4 2021-07-15 10:37:16

チポ
Member

Re: 特定文字の後に一文字追加

ああ、
全角、半角スペースが混在していると面倒なことになりますね。


結果を
全角(または半角)スペースに統一してもいいでしょうか?

また、
  総務課 服部 一郎
このようなのもあり得ますか?

Offline

#5 2021-07-15 11:01:47

Shin
Member

Re: 特定文字の後に一文字追加

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

#6 2021-07-15 11:04:51

himadanee
Guest

Re: 特定文字の後に一文字追加

チポさんの例から考えると(部以外の部署名の可能性)
部署名と氏名の間には必ずスペースがあるということだから
もしかすると、「最初のスペースをアンダーバーに」の方が真の要望なのかも?

そもそも部署名と氏名が別々のフィールドに入ってたのを連結した結果だったりはしないのかな。

#7 2021-07-15 11:42:19

COLNAGO
Member

Re: 特定文字の後に一文字追加

チポさん

結果を全角(または半角)スペースに統一してもいいでしょうか?
>半角スペースで統一で良いです。

また、  総務課 服部 一郎このようなのもあり得ますか?
>前後のスペースは先に処理がされていますので、このパターンはありません。

Shinさんの方法で出来ましたが、チポさんの方法も教えてください。
よろしくお願いします

Last edited by COLNAGO (2021-07-15 12:03:20)

Offline

#8 2021-07-15 12:02:01

COLNAGO
Member

Re: 特定文字の後に一文字追加

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

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 519.02 KiB (Peak: 523.55 KiB) ]