
No.7
- 回答日時:
ちょっと頑張ってみる:
/^[+-]?(0[0-7]*|0x[0-9a-f]+|[1-9]\d*|(0\.?|[1-9]\d*|0?\.\d+|[1-9]\d*\.\d*)e[+-]?\d+$/i;
わけわからん.
No.5
- 回答日時:
数値か文字列かを区別したい状況ってのがよくわからないんですが, 何をしたいんですか?
この回答への補足
皆様ご回答ありがとうございます。
正規表現が一番手っ取り早いようですね。
Tacosan様。
たとえば、Perlと同じく文字列と数値を区別しないASP言語では IsNumeric() という関数があります。これは、
val1 = "3"
val2 = "文字列"
というように、変数に値を代入しておいて、
IsN = IsNumeric(val1)
とすると、変数IsNにはTrueが戻ります。
IsN = IsNumeric(val2)
とすると、変数IsNにはFalseが戻ります。
つまり数値と評価できる文字列にはTureを返します。
これと同じような関数等を探しているのです。
まだいろいろな方法を知りたいので、「私はこうしてるよ」という方がおられましたら、ご回答よろしくお願いします。

No.3
- 回答日時:
No2です。
すみません。小数点に対応しておりませんでした。こちらのほうがいいかもしれません。自信はありませんが・・
my $a = "12345文字";
my $b = 12345;
my $c = 123.567;
if( $a =~ /^\d+\.?\d+$/){print '$aは数字です';}
else{print '$aは文字です';}
print "\n";
if( $b =~ /^\d+\.?\d+$/){print '$bは数字です';}
else{print '$bは文字です';}
print "\n";
if( $c =~ /^\d+\.?\d+$/){print '$cは数字です';}
else{print '$cは文字です';}
print "\n";

No.2
- 回答日時:
自信はありませんが、正規表現であらわすなら、
my $a = "12345文字";
my $b = 12345;
if( $a =~ /^\d+$/){print '$aは数字です';}
else{print '$aは文字です';}
print "\n";
if( $b =~ /^\d+$/){print '$bは数字です';}
else{print '$bは文字です';}
print "\n";
これでいちおうできそうです。他の方の回答も参考にしたほうがいいです。便利な関数などあるかもしれません。
No.1
- 回答日時:
Perlの変数は、文字列と数値を区別しません。
なので、
$x="1.23";
は、文字列としてセットしているつもりですが、
文字列としても数値としても有効で、
文字列として評価されるときは文字列として
数値として評価されるときは数値として評価されるので、それを区別することはできません。(と思う)
便宜上数値と判断できるものを数値と見なすということであれば、
sub isNum($){
my ($x) = @_;
return $x eq $x * 1;
}
とかすればいいかと思いますが、
うまくいかない場合もあるかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
c言語 16進数の2進数への変換
-
ヒアドキュメントで表示した、...
-
【至急!!!】python言語で本を見...
-
Application.ScreenUpdating = ...
-
セレクトメニューで2つの項目...
-
formで特定のinputを送信しない...
-
Perlにて、sendmailを使用する...
-
文字の横にプルダウンを表示さ...
-
ACCESS テキストボックスを隙...
-
JSONで文字列が長い時
-
[python] 文字列を変数名として...
-
メモリをアドレスを直接指定し...
-
構造体の変数の値を、動的に取...
-
sendmailで複数の宛先にメール...
-
linq で 楽天ウェブサービスのX...
-
親ループのループ変数$_を子ル...
-
実行時エラー 3020の対策
-
月見る月はこの月の月
-
1桁の日付に0を付ける
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
I2C接続のLCDディスプレイを使う
-
Pythonでコンソールをクリアす...
-
pythonの*
-
c言語 16進数の2進数への変換
-
条件文の扱い方について
-
関数「exists」と「defined」の...
-
【至急!!!】python言語で本を見...
-
ファイルに書き込む
-
EUCで保存されたスクリプトにて...
-
Perl・正規表現が分かりません
-
改行
-
perlの型と8進数、10進数
-
ソートを利用して文字を昇順で...
-
配列 各項目を$n倍するプログ...
-
表という文字の扱いについて
-
シェルスクリプト+perl
-
ポーリングとHTMLデータのリロ...
-
awkの正規表現での最左最短マッ...
おすすめ情報