
表示したい数字が1桁もしくは2桁でHTML表示を等幅指定で合わせたいので
数字を1桁なら半角、2桁以上は全角にしたいと思っています。
下のように記述して、思い通りの動きはしているのですが
もう少しスマートに記述できればと思い質問させていただきます。
みなさんなら、どう記述するか、ご教示ください。
$no = 1;
# 1桁の場合、半角から全角にする
if ($no == 0) { $no2 = "0"; }
if ($no == 1) { $no2 = "1"; }
if ($no == 2) { $no2 = "2"; }
if ($no == 3) { $no2 = "3"; }
if ($no == 4) { $no2 = "4"; }
if ($no == 5) { $no2 = "5"; }
if ($no == 6) { $no2 = "6"; }
if ($no == 7) { $no2 = "7"; }
if ($no == 8) { $no2 = "8"; }
if ($no == 9) { $no2 = "9"; }
if ($no >= 10) { $no2 = "$no"; }
print "$no2";
No.2ベストアンサー
- 回答日時:
> 「use utf8;」で、スクリプト内で扱う文字コードを
> UTF8にする事で可能になるという理解でよろしいでしょうか?
ちょっと違う。
use utf8はスクリプト自体をUTF-8で記載することを宣言する物。
だからスクリプトはちゃんとUTF-8で保存してください。
これによって、perlは「スクリプト内」の文字列を正しく文字列として扱えます。
これでケアできるのは「スクリプト内」の文字列なので、
「スクリプト外」(STDINとかコマンドライン引数、ファイル)からやってきた文字列として扱うつもりのデータは
decodeしてperlが文字列として扱えるように変換しなければなりません。
(例えそのデータがUTF-8文字列であってもです、decodeを省略できるのはASCIIやLatin-1だけ。)
逆に、「スクリプト外」(STDOUTやファイル)に文字列を出す場合は、
所望の文字コードにencodeする必要があります。
ただし、PerlIOレイヤを使えばこの処理は若干省略可能です。
binmode STDOUT, ":utf8";
はSTDOUTに出力するときのencodeを省略する為の物です。
これがないと、printのたびに
print encode( 'utf8', $no );
とかする必要があります。
use utf8で検索すれば上の方にこんなページが引っかかります。
http://www.rwds.net/kuroita/program/Perl_unicode …
http://hikoboshi.org/perl/utf8.html
http://blog.livedoor.jp/dankogai/archives/512241 …
ご回答ありがとうございました。
いただいたソースを私なりに調べたのですが、詰めが甘かったです。
最近は、スクリプトをUTF-8で作成しています。
「use utf8」で、スクリプト内の文字列がそのまま使えるわけですね
エンコード・デコードに関しても勉強になりました。
挙げていただいたサイトも再読いたします。
詳しく解説いただきありがとうございました。
No.3
- 回答日時:
素の状態では、「全角文字」は「2つの文字(Shift_JISの場合)」として処理されます。
よって tr/0-9/0-9/は tr/0-9/AB-CD/を書くようなものです。(ここでは、A:0の1バイト目、B:0の2バイト目..とします)
一文字として処理しなければならない「全角文字」がバラバラに処理されてしまうわけです。
use utf8 ; には、スクリプトがutf8で掛れていることを示すと同時に、utf8の「複数バイト文字」を「一文字」として処理するようになります。
これでtr/0-9/0-9/が 0と「全角の0」が1文字ずつ対応できるようになります。
No.1
- 回答日時:
> 数字を1桁なら半角、2桁以上は全角にしたいと思っています。
コードは逆だったのでコードの方を信用しました。
use utf8; #UTF-8で記載
use strict;
use warnings;
binmode STDOUT, ":utf8"; #環境に合わせる
#binmode STDOUT, ":encoding(euc-jp)";
#binmode STDOUT, ":encoding(cp932)";
my $no = 1;
if( 0 <= $no && $no <= 9 ){ $no =~ tr/0-9/0-9/; }
print "$no\n";
迅速な回答ありがとうございました。
> コードは逆だったのでコードの方を信用しました。
失礼しました。
コピーペーストで貼り付けたら、表示が半角と全角が逆になってしまいました。
以前「$no =~ tr/0-9/0-9/」は考えたのですが
上手く動作しませんでした。
「use utf8;」で、スクリプト内で扱う文字コードを
UTF8にする事で可能になるという理解でよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- UNIX・Linux Linuxの実行結果を修正したいです。 2 2022/11/23 08:32
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- 英語 “The Law if Effect states that no planning is invo 1 2023/02/02 19:06
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCのコントロールにUTF-8の文...
-
UTF-8 フラグ?で文字化けしま...
-
Jcodeによるカタカナ→ひらがな変換
-
機種依存文字(株)を入力すると\...
-
HTML::Templateでutf-8のテンプ...
-
perl でエラー:Wide character...
-
sedやperlでの2バイト文字を含...
-
【LaTeX】pBibTeXでのエラーの...
-
Java+MySQLで特殊文字(丸数字(...
-
【文字コード】外見上は全く同...
-
カタカナ一覧表が知りたい
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
EXCELからCSVにすると余計なカ...
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
-
エクセルにMicrosoft Barcode C...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
MFCのコントロールにUTF-8の文...
-
【文字コード】外見上は全く同...
-
【LaTeX】pBibTeXでのエラーの...
-
jcode.plのかわり
-
printfの書式指定での2バイト文...
-
Perlで、文字の出現回数を調べ...
-
Java+MySQLで特殊文字(丸数字(...
-
JcodeモジュールとEncodeモジュ...
-
今更ながらdbmopenでutf8環境に...
-
perlで読み込むテキストの文字...
-
PHPとMySQLをご利用の方
-
Jcodeによるカタカナ→ひらがな変換
-
デバッグ情報が文字化けする
-
機種依存文字(株)を入力すると\...
-
sedやperlでの2バイト文字を含...
-
PIC16F84AのBlank Checkは
-
UTF-16からUTF-8への変換
-
perlについての質問
-
substrでutf8の日本語文字を先...
おすすめ情報