WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:IPアドレス文字列のsplit

0:[投稿] ちあき [2005/09/01 20:11 ][環境:IE6 Apache Tomcat]

要求元IPアドレス取得を分割して第3オクテットを取得
したいと思っています。
下記の様に記述してみたのですが上手く動作しません。

 String wIpAdd = request.getRemoteAddr();
 String[] wIpDev = "wIpAdd".split(".");

試しに下記の様にIPアドレスを直接記述してみたのですが
やっぱりダメでした。

 String[] wIpDev = "192.168.1.254".split(".");

ところが区切り文字を"."から"/"に変更した所望むような
動作を致しました。

 String[] wIpDev = "192/168/1/254".split("/");

splitは"."を区切り文字として認識しないのでしょうか?

また他に良い方法がありましたらご教授頂けますでしょうか。
以上、宜しくお願い致します。


1:[回答] low_kick [2005/09/01 20:43 ]

>splitは"."を区切り文字として認識しないのでしょうか?
String[] wIpDev = "192.168.1.254".split("\.");
にしてみる(\を書くときに\\とするのと同じ理由なら)と言うのはどうでしょう。


2:[回答] ちあき [2005/09/02 10:49 ]

早速の回答ありがとうございます。
試したのですがダメでした。
"."はエスケープ文字の対象ではないようです。


3:[回答] 神崎 [2005/09/02 11:22 ]

JSPはやったことないので想像ですが、

> String wIpAdd = request.getRemoteAddr();
> String[] wIpDev = "wIpAdd".split(".");
この部分、
String[] wIpDev = wIpAdd.split(".");
ではないでしょうか?

String[] wIpDev = "192.168.1.254".split(".");
このときのwIpDev[0]にはどんな文字列が入ってますか?

String[] wIpDev = "192.168.1.254".split('.');
ではいかがでしょうか。


4:[回答] ちあき [2005/09/02 13:53 ]

回答ありがとうございます。

>> String wIpAdd = request.getRemoteAddr();
>> String[] wIpDev = "wIpAdd".split(".");
>この部分、
>String[] wIpDev = wIpAdd.split(".");
>ではないでしょうか?

ご指摘の通りでした。上手くいかずいろいろ試した後の
質問だった為不必要な「"」を付けたままでした。 
ソースにはご指摘の様に記述しています。
String wIpAdd = request.getRemoteAddr();
String[] wIpDev = wIpAdd.split(".");

> String[] wIpDev = "192.168.1.254".split(".");
> このときのwIpDev[0]にはどんな文字列が入ってますか?

wIpDev[0]の文字列は見る事が出来ませんでした。
"."を区切り文字とした場合、wIpDev[0]の配列の中身を
見ようとするところで怒られるみたいです。
 java.lang.ArrayIndexOutOfBoundsException: 1
"/"を区切り文字とすると正しく"192"と入っており
表示も可能だった為、"."が区切り文字として使用不可かのでは
と思い質問するに至りました。

> String[] wIpDev = "192.168.1.254".split('.');
> ではいかがでしょうか。

上手く行きませんでした。('/')でもコンパイルが通りません
でしたので記述的に不可なのでしょうか。


5:[回答] 人形師 [2005/09/02 15:44 ]

String[] wIpDev = wIpAdd.split("\\.");

としてみてください。
「.」が正規表現として解釈されているために、予想する結果と違ってしまっていると思います。
そこで、Javaで「\\.」としてやれば正規表現で「\.」と記述していることになるので「.」でsplit可能になります。


6:[完了] ちあき [2005/09/02 16:33 ]

ありがとうございます。上手くいきました!

正規表現に関して非常に大切な事を教えて頂いた気がします。

回答を頂きました皆さんに感謝致します。
ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World