
いつもお世話になっております。
下記のようなStringのデータを配列に格納したいのですが、
private static final String MAILS = "test1@test.com,tes,t2@tes,t.net,test3@te,st.jp";
普通にカンマで分割するとメールアドレスの形式はめちゃくちゃで配列に格納されてしまいます。
StringTokenizer st = new StringTokenizer(MAILS, ",");
String [] mailList = new String[st.countTokens()];
int i = 0;
while (st.hasMoreTokens()) {
mailList[i] = st.nextToken();
i++;
}
test1@test.com
tes,t2@tes,t.net
test3@te,st.jp
上記のようにちゃんとしたメールの形式で配列に格納するにはどうすればいいでしょうか?
ご教授頂ければ幸いです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
>もしタイプミスで入力されたら・・・。
>やっぱり技術的に無理でしょうか。。
いくらなんでも無茶です(^^;
タイプミスを前提とするなら、例示されたケースだけでは不足ですよね?
何らかのルール付けができないのであれば「ランダムな文字列をすべてメールアドレスとして正しく解釈する」というのと同じことですので。
間違った入力には「間違ってます」とメッセージを出すべきだと思います。
(例:カンマで分割した後、各要素がメールアドレスの形式になっていなければエラーと表示)
そうできない状況でしょうか?
もう少し開発の背景を知りたいです。
No.2
- 回答日時:
>もしタイプミスで入力されたら・・・。
と言う時や、DoS攻撃等に備えて、処理を行う前にちゃんと入力チェックすることが基本です。(個人で使うものならしなくてもかまいませんが・・・)
メールアドレスやURL等は利用できる文字がRFCで決まっているので比較的簡単にチェックできるはずです。ものによっては正規表現でのチェックも可能です。
間違った入力を受け付け処理してしまうような仕様は危険です。仕様を見直しましょう。
No.1
- 回答日時:
Stirng#split()を使って、カンマの条件をjpなどのトップドメイン+カンマに限定すればましにはなると思いますが、想定外のデータが来るとすぐに破綻しますね。
区切り用のカンマと、データとしてのカンマを機械的に区別するには、
CSV等のように特殊文字をエスケープするルールがないと無理です。
以下は補足要求です。
ドメイン名やアカウント名にカンマが入ってるんですか??
使用できないはずですが…
アカウント名に含める場合には「"」で囲むことによって可能だったかもしれません。
ドメイン名はアルファベット、英数字、ハイフンだったと思います。
この回答への補足
>ドメイン名やアカウント名にカンマが入ってるんですか??
たしかに考えにくいことではありますが、
もしタイプミスで入力されたら・・・。
という心配をしています。。
やっぱり技術的に無理でしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
配列の中に複数存在する数がい...
-
ページング
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
同じ配列またはクラスを、2回...
-
ArrayListからBean配列に値をセ...
-
java StringとString[]の違い
-
ファイルの読み込み、配列に格納
-
Javaには、構造体はないんですか?
-
配列数を超えてアクセスしたと...
-
【C#】ハッシュテーブル(連想...
-
Generics で型チェック
-
hit&blow
-
JSPでデータ一覧表示
-
2次元配列のコピー
-
JavaのCalendarのMONTHはなぜ0...
-
【Ajax通信&Java】配列の受け取...
-
『args[]』とは?
-
選択した項目を隣のリストへ移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
フローチャート
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
配列の中に複数存在する数がい...
-
セッションを使ったint型の値の...
-
【C#】ハッシュテーブル(連想...
-
javaについて
-
javaでの文字列からの数字抽出
-
配列について
-
javaで大容量テキストファイル...
-
配列数を超えてアクセスしたと...
-
【Ajax通信&Java】配列の受け取...
-
『args[]』とは?
-
ArrayListからBean配列に値をセ...
-
C言語でunsigned char配列を連...
-
strutsで2次元配列をやりとりす...
-
javamailで複数人にメールを送...
おすすめ情報