みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
katakana(テキスト)と kanahankaku(テキスト) とromanhankaku(テキスト)の関数を一度に使う時に、記述が下手で上手くいきません。
やりたいことは、以下のようなテキストをなるべく半角にして、さらに左から30文字だけで完成させたいと思ってます。
元のデーター:貴方のメアドをAB12@cd.comのように、書いて下さい。
上記は全部全角とします。
変換希望の形は、まず出来る限り半角なので「貴方ノメアドハAB12@cd.comノヨウニ、書イテ下サイ。」これではまだ35文字なので
左から30文字以上は強制的に切り落とし
最終的には「貴方ノメアドハAB12@cd.comノヨウニ、書イテ」としたいのです。
実際の使い方は、多量なデーターのcsvファイル(漢字ひらがなカタカナ英数その記号)をあるテーブルに移入する作業です。
インポートの段階で、フィールド内に計算式を入れて計算結果として取り込みたいのです。(変換エラーは無視します)
インポート側の文字最大値とこちらの受け入れる(2次加工で使用する)文字最大値が違うため、出来るだけ長い文字数で完成したいのです。
よろしくお願いいたします
Offline
順番に入れ子にすればいいのでは。
romanhankaku(kanahankaku(katakana(テキスト)))
30文字とは、shiftJISでの30バイトの意味のようですね。上の結果をさらに、
TextDecode ( HexDecode ( Left ( HexEncode ( TextEncode ( テキスト ; “shift_jis” ; 1 ) ) ; 60 ) ; bin.bin ) ; “shifr_jis” )
という式を通すといいのでしょう。ただし、30バイト目に全角文字が入ると2バイト文字が途中で切られる事になりエラーになります。エラーになれば29バイトにするとかの処理が別途必要でしょう。
Last edited by Shin (2023-03-30 12:08:16)
Offline
再起式
Let ( [ $c = 30 ;
$t = RomanHankaku(KanaHankaku(Katakana( テキスト ) ) ) ;
$t = Left ( $t ; $c ) ;
$L = Length ( $t & Filter ( $t ; RomanZenkaku ( KanaZenkaku ( $t ) ) ) ) ;
$式 = "Case ( $L < 31 ; $t ; Let ( [ $c = $c - 1 ;
$t = Left ( $t ; $c ) ;
$L = Length ( $t & Filter ( $t ; RomanZenkaku ( KanaZenkaku ( $t ) ) ) ) ] ;
Evaluate ( $式 ) ) )" ];
Evaluate ( $式 ) )
冗長ですが。。
31バイト目に濁点、半濁点がくるとその前で切れてしまいます。
Last edited by チポ (2023-03-30 11:27:05)
Offline
今気が付きました。。
句読点「、。」を直接半角にできる関数はありませんね。
Subsutitute で「,.」に変えるしかないでしょう。
Offline
さらに、、
「」~
も変えてくれない。
他にもあるのか??
Offline
いろいろとご教示いただきありがとうがございました。
、。「」~などはないので、私の処理できる範囲のものは、解決致しました。
個人的には、関数の勉強不足のため、とても役立ちました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 561.83 KiB (Peak: 586.27 KiB) ]