みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
文字置換がうまくできません。
文字列は ○○ABCD○○○○ああ のようなかたちで ○ はスペースです。
先頭にスペースが入っているものもあり、間にいくつかスペースを挟んでいます。
先頭から文字列までのスペースを削除したいのですが、スペースの数も不定で、文字が開始するところまでの文字数の指定もわかりません。
よろしくお願いします。
末尾のスペースも取ってよければ、Trim関数で
先頭のスペースの数はPosition(text;LeftWords(text;1);1;1)で出るかな。
Let(
[
#txt=文字列;
#pos=Position(#txt;LeftWords(#txt;1);1;1);
#n=Length(#txt)
];
Middle(#txt;#pos;#n)
)
Offline
ぽんかん様Hiro様ありがとうございます。
おかげさまで先頭からのスペースを削除できました。
関数のヘルプと見比べながらようやく理解できました。
変数やLeftWordsというものを使うんですね。
とても勉強になりました。
ありがとうございました。
LeftWords関数だと
" #FileMaker"
みたいにスペースに続いて、記号で始まると記号が無視されちゃうけど大丈夫?
後で私も気付いてたけどそれで良いみたいで[解決]だったので、
万一記号文字が付くことも考慮するなら、地道にループ式を組んで
1文字づつ厳密にチェックする方法しか思いつかない、
何かもっと簡略な手は無いものか?
Let([
$fnc=
"Case($i=$n or $flg; $i;
Let([$i=$i+1;$chr=Middle($txt;$i;1);$flg=IsEmpty(Filter($kwd;$chr))];Evaluate($fnc))
)";
$kwd=Char(32)&Char(12288);
$i=0;
//
$txt=文字列;
$pos=Evaluate($fnc);
$n=Length($txt)
];
Middle($txt;$pos;$n)
)
Offline
Substituteでスペースを取った後の最初の1文字目を起点にすればいいんじゃない?
ゲストユーザー様Hiro様 ありがとうございます。
「解決」とした後、お邪魔していなかったのでお礼が遅くなってすみませんでした。
私の場合はスペースの後には記号が続いていなかったので大丈夫でしたが、ご指摘いただいたことを肝に銘じておきます。
Hiro様に教えていただいた方法も今から勉強させていただきます。
文字列の途中にあるスペースはそのまま使用したかったので、先頭のスペースだけ取りたくて相談させていただきました。
先輩方、本当にありがとうございました!
LeftWordsでなくTrimを使えばいいかな。
Replace ( text ; 1 ; Position ( text ; Trim ( text ) ; 1 ; 1 ) - 1 ; "" )
おぉ、calcerさん案に1票!^o^
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 519.27 KiB (Peak: 523.81 KiB) ]