過去の桐井戸端BBS (桐ver.8)
12873 ひらがなとカタカナはそのままで英字と数字と一部の記号のみを全角から半角に変換したい NTA 2001/08/31-16:53
度々お邪魔します。
今度はちゃんと過去ログを見てから来ました。
が、どうも自分には難しすぎるテーマのようで、
過去例ではうまく活用する事が出来ませんでした。
助言をお願いします。

項目内全てが全角文字で入力されている項目のうち、平仮名とカタカナは全角のままで、
英字と数字、一部の記号のみ半角に変換したいのです。
全角のままにしておきたい記号は"ー"や"。"などです。
過去例を見ているとカタカナがネックになるようですね。
できれば項目計算式等で済ませたいのですが、
(一括処理はまだ使った事がないので)
やはり一括処理でないと出来ない事なのでしょうか?
12874 Re:全角文字を半角に変換したい NTA 2001/08/31-19:31
記事番号12873へのコメント
いつも自分で質問して、自分で答えているみたいですが…(^‐^;
過去ログをもう一度じっくりと見直して、
「#8506」のコメントの「#8514」が使えるのではないかと思い、
一括処理の文章の中で、全角カタカナになっているものを半角カタカナに直して試してみました。
これで半角→全角というのはうまくいくようです。
『処理したい項目の項目番号を入力』という風に尋ねてくるのですが、
この項目番号というのは
「左から何列(?)目の項目か」
という事で良いのでしょうか。
(項目名が左から[A]、[B]、[C]…なら順に項目番号1、2、3)


項目全体[A]を一度半角に直してから、この一括処理を行うとなると、
項目[B]で
#半角([A])
と変換して、それを一旦書き出してから、
**
もう一度読み込んだ物(項目計算式は外す)を
一括処理するしかないのでしょうか?

これらの処理(*から**まで)も一括処理に入れてしまえばいいのかな?
12875 Re:全角文字を半角に変換したい MAO 2001/08/31-20:06
記事番号12873へのコメント
NTAさん

>度々お邪魔します。
>今度はちゃんと過去ログを見てから来ました。
>が、どうも自分には難しすぎるテーマのようで、
>過去例ではうまく活用する事が出来ませんでした。
>助言をお願いします。
>
>項目内全てが全角文字で入力されている項目のうち、
>平仮名とカタカナは全角のままで、
>英字と数字、一部の記号のみ半角に変換したいのです。
>全角のままにしておきたい記号は"ー"や"。"などです。
>過去例を見ているとカタカナがネックになるようですね。
>できれば項目計算式等で済ませたいのですが、
>(一括処理はまだ使った事がないので)
>やはり一括処理でないと出来ない事なのでしょうか?


 下に書いた計算式は、項目内の文字数分だけ、式を書かなければならないのでお勧めでは出来ないのですが、
とりあえず素人考えで書きます。

[A]=変換したい項目

#条件選択(#部分列([A],1,1)=。 .or #部分列([A],1,1)=ー .or #ISかな(#部分列([A],1,1),1)=1 .or #Isカナ(#部分列([A],1,1),1)
=1,#部分列([A],1,1),1,#半角(#部分列([A],1,1)))+#COND(#部分列([A],2,1)=。 .or #部分列([A],2,1)=ー .or #ISかな(#部分列([A],2,1),1)
=1 .or #Isカナ(#部分列([A],2,1),1)=1,#部分列([A],2,1),1,#半角(#部分列([A],2,1)))

とこんな感じで、後は、文字数分だけ続けて書けばできると思いますが。

文字数分だけ書く気力が問題ですが。

そこでやっぱり一括処理を使った方が現実かと。

過去ログのKamiyaさんが書いていた#8543の一括処理を応用すれば出来ると思いますが。

試さないで思いつきで書いて申し訳ありません。
12920 Re:全角文字を半角に変換したい うにん 2001/09/03-09:22
記事番号12873へのコメント
NTAさん

>項目内全てが全角文字で入力されている項目のうち、
>平仮名とカタカナは全角のままで、
>英字と数字、一部の記号のみ半角に変換したいのです。
>全角のままにしておきたい記号は"ー"や"。"などです。

英字のみを半角にするには、ど根性で

#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(
#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(
#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換([A],"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")

とすればできます。数字も一度にやろうとしたら、「括弧は30重までです」といわれちまいました(^^;
ので、もうひとつ項目を作って同じように数字と記号を#文字置換すれば一応目的は達成できると思います。
(Perlなら簡単なのにね^^; #対応文字置換([A],"Aあ$","Aア$")てやるとAがAに、あがアに、$が$に置換されるといいのよね)
12923 Re:全角文字を半角に変換したい うにん 2001/09/03-10:48
記事番号12920へのコメント
>英字のみを半角にするには、ど根性で

根性不足で大文字しか変換してませんでした(^^;


12924 Re:全角文字を半角に変換したい 今村 誠 2001/09/03-12:12
記事番号12923へのコメント
うにんさんこんにちは

>>英字のみを半角にするには、ど根性で
>
>根性不足で大文字しか変換してませんでした(^^;

#計算(#代入(&STR,#S()),#代入(&比較式,#S(&STR)),&STR)みたいな感じで左から根性で順番に計算させたら一度にできませんか
根性がないので試していません。
文字数制限が何文字かわからないので#Sにしてみました。

12926 Re:全角文字を半角に変換したい NTA 2001/09/03-13:51
記事番号12873へのコメント
MAOさん、うにんさん、今村誠さん、御回答ありがとうございます。
やはり項目計算式だけでやろうとするとかなり根気がいるようですね。
この項目は自由記述なので実際のデータを手にするまで何文字あるのか見当もつきません。
(今はまだ見積もりの段階なのです)
それに、申し上げにくいのですが、仮にこの仕事が私の会社で取れた事になったとしても、
どうやら桐ではなく、Accessで処理する事になる様子です。
そうなると、私の手からも離れてしまうので、折角考えて頂いたのに無駄になってしまう事になるかと思います。
お騒がせしてすみませんでした。
しかし、今回教えて頂いた事は今後の自分の勉強に活かしていきたいと思います。
本当にありがとうございました。
12927 Re:全角文字を半角に変換したい うにん 2001/09/03-14:16
記事番号12924へのコメント
今村 誠さん

>#計算(#代入(&STR,#S()),#代入(&比較式,#S(&STR)),&STR)
>みたいな感じで左から根性で順番に計算させたら一度にできませんか
>根性がないので試していません。
>文字数制限が何文字かわからないので#Sにしてみました。

おお〜!

#計算(#代入(&STR,#S([A],"A","A")),#代入(&STR,#S(&STR,"B","B")),#代入(&STR,#S(&STR,"C","C")),
#代入(&STR,#S(&STR,"D","D")),#代入(&STR,#S(&STR,"E","E")),#代入(&STR,#S(&STR,"F","F")),
#代入(&STR,#S(&STR,"G","G")),#代入(&STR,#S(&STR,"H","H")),#代入(&STR,#S(&STR,"I","I")),
#代入(&STR,#S(&STR,"J","J")),#代入(&STR,#S(&STR,"K","K")),#代入(&STR,#S(&STR,"L","L")),
#代入(&STR,#S(&STR,"M","M")),#代入(&STR,#S(&STR,"N","N")),#代入(&STR,#S(&STR,"O","O")),
#代入(&STR,#S(&STR,"P","P")),#代入(&STR,#S(&STR,"Q","Q")),#代入(&STR,#S(&STR,"R","R")),
#代入(&STR,#S(&STR,"S","S")),#代入(&STR,#S(&STR,"T","T")),#代入(&STR,#S(&STR,"U","U")),
#代入(&STR,#S(&STR,"V","V")),#代入(&STR,#S(&STR,"W","W")),#代入(&STR,#S(&STR,"X","X")),
#代入(&STR,#S(&STR,"Y","Y")),#代入(&STR,#S(&STR,"Z","Z")))

なるほどこれならできるかも。根性がないのでこれをコピーして3倍の長さになっても大丈夫、というとこまでしか試してみませんでしたが。
(どっちみちあんまり使いたくはないですね^^;どっか書き間違えて違う文字に置換したら悲惨だし)

戻る