初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


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

COLNAGO
メンバー

[解決] 特定文字の後に一文字追加

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


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

FileakerPro Ver17

編集者 COLNAGO (2021-07-14 22:51:17)

オフライン

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

チポ
メンバー

Re: [解決] 特定文字の後に一文字追加

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

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

オフライン

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

COLNAGO
メンバー

Re: [解決] 特定文字の後に一文字追加

チポさま


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

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


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


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

部_部 服部 一郎

(正)
総務部_服部 一郎

編集者 COLNAGO (2021-07-15 10:13:50)

オフライン

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

チポ
メンバー

Re: [解決] 特定文字の後に一文字追加

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


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

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

オフライン

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

Shin
メンバー

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 ; "部_" ) ;
        テキスト
    )
)
かな。

編集者 Shin (2021-07-15 14:41:08)

オフライン

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

himadanee
ゲストユーザー

Re: [解決] 特定文字の後に一文字追加

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

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

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

COLNAGO
メンバー

Re: [解決] 特定文字の後に一文字追加

チポさん

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

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

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

編集者 COLNAGO (2021-07-15 12:03:20)

オフライン

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

COLNAGO
メンバー

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 ; "部_" ) ;
テキスト )
)

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer