(現在 過去ログ63 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■9669 / inTopicNo.1)  全角、半角の変換
  
□投稿者/ ひで -(2016/02/16(Tue) 13:27:03)
    項目の値で、数字、カタカナ、英字が、全角や半角が混在したデータがあります。

    置換機能で、

    数字は半角
    英字も半角
    カタカナは全角

    変換したいのですが、どのようにすれば良いのかが判りません。

    どなたかアドバイスをよろしくお願い致します。


引用返信 [メール受信/ON] 削除キー/
■9670 / inTopicNo.2)  Re[1]: 全角、半角の変換
□投稿者/ まさやん -(2016/02/16(Tue) 19:02:24)
    #カナ(#半角(#かな(#全角([])))) でなりませんか?

    ならなかったらごめんなさい。
引用返信 [メール受信/OFF] 削除キー/
■9671 / inTopicNo.3)  Re[1]: 全角、半角の変換
□投稿者/ 通りすがり -(2016/02/17(Wed) 09:30:01)
    置換機能では、無理な気がします

    こういうのは標準関数で用意して欲しいですね、桐なんだからw
引用返信 [メール受信/OFF] 削除キー/
■9672 / inTopicNo.4)  Re[2]: 全角、半角の変換
□投稿者/ ひで -(2016/02/17(Wed) 10:40:00)
    まさやんさん、ありがとうございます。

    > #カナ(#半角(#かな(#全角([])))) でなりませんか?
    > ならなかったらごめんなさい。

    近いところまではできました。
    ありがとうございます。

    通りすがりさんのおっしゃるように「標準関数」で用意して欲しいものです。

    なんとか、これであとは文字置換の関数とか使って欲しい結果になるように頑張ります。


    ありがとうございました。

引用返信 [メール受信/OFF] 削除キー/
■9673 / inTopicNo.5)  Re[3]: 全角、半角の変換
□投稿者/ まさやん -(2016/02/17(Wed) 10:46:21)
    > 近いところまではできました。
    > ありがとうございます。

    実は 

    #IS数字 とか #ISカナ を使って  #文字位置と #部分列を使って

    変換  という ことも考えましたが 昨日のが簡単かなと思いました。 

引用返信 [メール受信/OFF] 削除キー/
■9674 / inTopicNo.6)  Re[3]: 全角、半角の変換
□投稿者/ ぽい -(2016/02/17(Wed) 12:57:06)
    近いというのは、どの部分が違うのですか?

引用返信 [メール受信/OFF] 削除キー/
■9675 / inTopicNo.7)  Re[1]: 全角、半角の変換
□投稿者/ 通りすがり -(2016/02/17(Wed) 13:12:08)
    > 項目の値で、数字、カタカナ、英字が、全角や半角が混在したデータがあります。
    >

    ひらがな の混入が無い事が、担保されているのですか?
引用返信 [メール受信/OFF] 削除キー/
■9676 / inTopicNo.8)  Re[2]: 全角、半角の変換
□投稿者/ ひで -(2016/02/17(Wed) 14:23:12)
    > ひらがな の混入が無い事が、担保されているのですか?

    ひらがなも含まれます。

    #カナ(#半角(#かな(#全角([])))) では、ひらがなが「カナ」になってしまいます。


    なんか、皆様にお手間取らせているようで…
    でも、助かります。

    ありがとうございます。

引用返信 [メール受信/OFF] 削除キー/
■9677 / inTopicNo.9)  Re[3]: 全角、半角の変換
□投稿者/ ONnoji -(2016/02/17(Wed) 14:35:31)
    2016/02/17(Wed) 16:59:03 編集(投稿者)
    2016/02/17(Wed) 14:37:42 編集(投稿者)

    > ひらがなも含まれます。
    >
    > #カナ(#半角(#かな(#全角([])))) では、ひらがなが「カナ」になってしまいます。

    <文字列中に{数字、カタカナ、英字}の字種しか存在しないという条件>が付くならば、

    これは実に簡便な方法ですね。

    ただし、

    半角の「ヴ」(※半角のウと半角の濁点)
     と
    全角の「ヴ」の場合だけ注意が必要です。

    ※常に半角になります。

    ちなみに、長音記号(ー)はカタカナではありませんが、カタカナ語の中に非常に多く混在すると思われます。

    長音記号(ー)も半角になってしまいますね。

    つまり、記号の類は全部半角になっちゃうハズですよ。(T_T)

    しかし、置換の計算式一発の結果なのだから、この程度で上出来でしょう。

    置換に失敗して半角になった文字は少ないだろうから、#文字置換()関数で置換すればよいですよね。

    結果オーライ、時は金なりですからね。


    <蛇足>

    意外と忘れられていますが、カタカナの「ヴ」に対応するひらがなの文字はありません。

    読みを入れるときには、カタカナを使いましょ。

    「ヴァイオリン」をひらがなで入力しようとすると困りますよ。

引用返信 [メール受信/OFF] 削除キー/
■9678 / inTopicNo.10)  Re[3]: 全角、半角の変換
□投稿者/ 通りすがり -(2016/02/17(Wed) 14:38:20)
引用返信 [メール受信/OFF] 削除キー/
■9679 / inTopicNo.11)  Re[3]: 全角、半角の変換
□投稿者/ まさやん -(2016/02/17(Wed) 21:00:59)
    > ひらがなも含まれます。
    >
    > #カナ(#半角(#かな(#全角([])))) では、ひらがなが「カナ」になってしまいます。

    そうですか。じゃ合いませんね。
引用返信 [メール受信/OFF] 削除キー/
■9680 / inTopicNo.12)  Re[1]: 全角、半角の変換
□投稿者/ eo -(2016/02/18(Thu) 09:59:57)
    数字、カタカナ、英字を半角に置換、カナが含まれている項目の半角カナを1文字毎に全角にするって感じでどうでしょう?
    mojitikan.tblを開いてmojitikan.cmdを実行してください。

    変数宣言 固有,文字列{&str,&kana},固有,整数{&文字数,&n,&i,&カナ}
    置換 [変換後]=#半角([変換前])
    繰り返し (.not #EOF)
     &n=#ISカナ([変換後],0)
      ケース開始
       ケース (&n>0)
        &str=[変換後]
        &文字数=#文字数([変換後])
         繰り返し &i=1,&文字数
          &kana=#部分列(&str,&i,1) 
          &カナ=#ISカナ(&kana,1)
          条件 (&カナ=1) &str=#文字置換(&str,&kana,#全角(&kana))
         繰り返し終了
       行訂正 [変換後]=&str
      ケース終了
     ジャンプ 行番号=次行
    繰り返し終了


mojitikan.zip
/4KB
引用返信 [メール受信/OFF] 削除キー/
■9681 / inTopicNo.13)  Re[3]: 全角、半角の変換
□投稿者/ うにん -(2016/02/18(Thu) 14:28:45)
    英数だけ半角にするんだったら、力技でいいじゃん、と思ったが、カッコの入れ子が30重までと言われてしまった。
    ので#計算で分割

    #計算(#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#全角([元]),"0","0"),"1","1"),"2","2"),"3","3"),"4","4"),"5","5"),"6","6"),"7","7"),"8","8"),"9","9")),#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(&STR,"A","A"),"B","B"),"C","C"),"D","D"),"E","E"),"F","F"),"G","G"),"H","H"),"I","I"),"J","J"),"K","K"),"L","L"),"M","M"),"N","N"),"O","O"),"P","P"),"Q","Q"),"R","R"),"S","S"),"T","T"),"U","U"),"V","V"),"W","W"),"X","X"),"Y","Y"),"Z","Z")),#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(&STR,"a","a"),"b","b"),"c","c"),"d","d"),"e","e"),"f","f"),"g","g"),"h","h"),"i","i"),"j","j"),"k","k"),"l","l"),"m","m"),"n","n"),"o","o"),"p","p"),"q","q"),"r","r"),"s","s"),"t","t"),"u","u"),"v","v"),"w","w"),"x","x"),"y","y"),"z","z"))

    やってから気づいたけど、「?」のようにどっちでもありうる文字があるんで、文脈まで判断しないと絶対無理ですねorz
引用返信 [メール受信/OFF] 削除キー/
■9682 / inTopicNo.14)  Re[4]: 全角、半角の変換
□投稿者/ ONnoji -(2016/02/18(Thu) 14:42:26)
    2016/02/18(Thu) 14:55:48 編集(投稿者)
    2016/02/18(Thu) 14:47:25 編集(投稿者)

    > 英数だけ半角にするんだったら、力技でいいじゃん、と思ったが、カッコの入れ子が30重までと言われてしまった。
    > ので#計算で分割

    英字だけ数字だけ置換という話題は大昔からありますね。

    ちなみに、拙作もございます。

    詳しくはこちら
     ↓
    第2回 英字を半角全角に変換!|フォームアプリケーション応用
    http://www.geocities.jp/siliconvalley_bay_7565/procedure02.htm

    2015-09-04 new! 桐9-20XXバージョンの書庫がダウンロード出来ます。
    サンプルをダウンロード v9_stuff.lzh 約13KB ファイルは桐9-20XXバージョンです
    桐9-20XX と 桐10 を利用する場合にはこちらをダウンロードしてください。

    拙作サンプルを添付します。

    これは拙作HPからダウンロードしたものと同じです。


    <追伸>

    カタカナの変換に関するあくまでも個人的な感想です。

    半角カタカナには濁点や半濁点との組み合わせが存在します。

    だから半角カタカナ文字を一文字ずつ調べる場合、直後の濁点や半濁点もチェックしなければならない。

    全角カタカナ文字ではチェックは不要なので、カタカナ文字が全角なのか半角なのかのチェックも必要。

    このチェックは面倒なだけで、もちろん可能だが、

    しかし、わざわざ半角カタカナを全角に変換するというアプローチ自体に違和感を感じる。

    だって#全角で簡単に全角に変換できるのだからねぇ〜。※#半角で逆変換も一発だっ。

    一方、数字と英字の場合には、半角カタカナのように直後の文字を調べる必要がないので、

    数字と英字を半角に変換するアプローチの方が自然な感じがします。

    従って、半角カナをターゲットに全角変換しないで、一度すべての文字を全角に変換してから、

    必要ならば英字と数字を半角に変換すればOKだろうと思うのでありました。




v9_stuff.lzh
/13KB
引用返信 [メール受信/OFF] 削除キー/
■9683 / inTopicNo.15)  Re[2]: 全角、半角の変換
□投稿者/ eo -(2016/02/18(Thu) 17:42:42)
    改良しました^^;

    変数宣言 固有,文字列{&str,&eiji,&suji},固有,整数{&文字数,&e,&s,&i}
    置換 [変換後]=#全角([変換前])
    繰り返し (.not #EOF)
     &e=#IS英字([変換後],0)
     &s=#IS数字([変換後],0)
      ケース開始
       ケース (&e>0)
        &str=[変換後]
        &文字数=#文字数([変換後])
         繰り返し &i=1,&文字数
          &eiji=#部分列(&str,&i,1) 
          &e=#IS英字(&eiji,1)
          条件 (&e=1) &str=#文字置換(&str,&eiji,#半角(&eiji))
         繰り返し終了
       行訂正 [変換後]=&str
       ケース (&s>0)
        &str=[変換後]
        &文字数=#文字数([変換後])
         繰り返し &i=1,&文字数
          &suji=#部分列(&str,&i,1) 
          &s=#IS数字(&suji,1)
          条件 (&s=1) &str=#文字置換(&str,&suji,#半角(&suji))
         繰り返し終了
       行訂正 [変換後]=&str
      ケース終了
     ジャンプ 行番号=次行
    繰り返し終了


1455784962.zip
/13KB
引用返信 [メール受信/OFF] 削除キー/
■9704 / inTopicNo.16)  Re[2]: 全角、半角の変換
□投稿者/ ひで -(2016/03/07(Mon) 11:50:31)
    みなさま、いろいろとありがとうございます。


    eo様の、下記の分が、ほぼ思っている結果を得られたのですが

    ただひとつ
    「ジャパン」を変換すると「シ゛ャハ゜ン」となってしまいます。
    「゛」に変換されてしまいます。

    この一括処理を自力では修正不能です。

    どうか、教えていただけないでしょうか?
    よろしくお願い致します。





    > 変数宣言 固有,文字列{&str,&kana},固有,整数{&文字数,&n,&i,&カナ}
    > 置換 [変換後]=#半角([変換前])
    > 繰り返し (.not #EOF)
    >  &n=#ISカナ([変換後],0)
    >   ケース開始
    >    ケース (&n>0)
    >     &str=[変換後]
    >     &文字数=#文字数([変換後])
    >      繰り返し &i=1,&文字数
    >       &kana=#部分列(&str,&i,1) 
    >       &カナ=#ISカナ(&kana,1)
    >       条件 (&カナ=1) &str=#文字置換(&str,&kana,#全角(&kana))
    >      繰り返し終了
    >    行訂正 [変換後]=&str
    >   ケース終了
    >  ジャンプ 行番号=次行
    > 繰り返し終了
    >
引用返信 [メール受信/OFF] 削除キー/
■9705 / inTopicNo.17)  Re[3]: 全角、半角の変換
□投稿者/ eo -(2016/03/07(Mon) 16:08:28)
    2016/03/07(Mon) 16:11:33 編集(投稿者)

    改良済みのNo9683のでやってみてください。
引用返信 [メール受信/OFF] 削除キー/
■9706 / inTopicNo.18)  Re[4]: 全角、半角の変換
□投稿者/ ひで -(2016/03/07(Mon) 16:30:24)
    すみません。
    こちらで行うと、数度が全角になってしまうのがあるんですが…


    No9705に返信(eoさんの記事)
    > 2016/03/07(Mon) 16:11:33 編集(投稿者)
    >
    > 改良済みのNo9683のでやってみてください。

1457335824.zip
/5KB
引用返信 [メール受信/OFF] 削除キー/
■9710 / inTopicNo.19)  Re[5]: 全角、半角の変換
□投稿者/ eo -(2016/03/09(Wed) 11:51:48)
    あちゃー!ホントだわ!
    再改良したの添付します^^;


20160309.zip
/9KB
引用返信 [メール受信/OFF] 削除キー/
■9711 / inTopicNo.20)  Re[6]: 全角、半角の変換
□投稿者/ ONnoji -(2016/03/09(Wed) 12:23:01)
    2016/03/09(Wed) 14:46:59 編集(投稿者)
    2016/03/09(Wed) 13:06:31 編集(投稿者)
    2016/03/09(Wed) 12:43:56 編集(投稿者)

    eoさん、横レス失礼します。m(__)m

    > eo様の、下記の分が、ほぼ思っている結果を得られたのですが
    > ただひとつ
    > 「ジャパン」を変換すると「シ゛ャハ゜ン」となってしまいます。
    > 「゛」に変換されてしまいます。
    >
    > この一括処理を自力では修正不能です。
    >
    >>変数宣言 固有,文字列{&str,&kana},固有,整数{&文字数,&n,&i,&カナ}
    >>置換 [変換後]=#半角([変換前])
    >>繰り返し (.not #EOF)
    >> &n=#ISカナ([変換後],0)
    >>  ケース開始
    >>   ケース (&n>0)
    >>    &str=[変換後]
    >>    &文字数=#文字数([変換後])
    >>     繰り返し &i=1,&文字数
    >>      &kana=#部分列(&str,&i,1) 
    >>      &カナ=#ISカナ(&kana,1)
    >>      条件 (&カナ=1) &str=#文字置換(&str,&kana,#全角(&kana))
    >>     繰り返し終了
    >>   行訂正 [変換後]=&str
    >>  ケース終了
    >> ジャンプ 行番号=次行
    >>繰り返し終了

    半角のカナを全角にする場合、濁点と半濁点の処理が相当面倒です。

    そのために、eoさんの改良版は、

    半角のカナを全角にするのを諦めて、

    #IS英字 #IS数字 #IS記号 を駆使して、英字・数字・記号を半角にするアプローチをしたものです。

    当方も興味があったのでいろいろ試してみましたが、このアプローチもいろいろと問題が発生するようだと気が付きました。

    そこで、元に戻って、半角のカナを全角にするアプローチを試みて、

    半角のカナを全角にする場合の濁点と半濁点の処理を付け加えたサブルーチンを製作したところ、

    案外と上手くいくので添付ファイルでご案内いたします。


    <追伸>

    > こちらで行うと、数度が全角になってしまうのがあるんですが…

    ↑この“数度”というのは何のことでしょうか???


1457493781.zip
/4KB
引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -