![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっております。
下記のような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で質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java
-
ファイルの読み込み、配列に格納
-
ページング
-
『args[]』とは?
-
javaで大容量テキストファイル...
-
C言語でunsigned char配列を連...
-
配列・クリア
-
CSVファイルの、列だけ取得したい
-
セッションを使ったint型の値の...
-
CSVファイルを多次元配列に格納...
-
この警告はどうすれば?
-
質問です。 配列が100以上の場...
-
Javaで文字と数字が混ざったも...
-
配列数を超えてアクセスしたと...
-
csvファイルを2次元配列に格納
-
配列を使ってカレンダーを表示...
-
いくつかのchar型の配列に入っ...
-
[Ljava.lang.Stringってなんですか
-
CSVファイルを二次元配列に格納...
-
java 乱数を並べて重複させない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
n番目に大きな値を探索する
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
Javaで文字を漢字であるか否か...
-
配列をセッションに割り当てた後で
-
配列の中に複数存在する数がい...
-
java
-
Javaで文字と数字が混ざったも...
-
C#で動的配列Listの中身をListB...
-
配列で、値の入っている要素数...
-
『args[]』とは?
-
【C#】ハッシュテーブル(連想...
-
ページング
-
セッションを使ったint型の値の...
-
配列について
-
同じ配列またはクラスを、2回...
-
ArrayListからBean配列に値をセ...
-
Java配列の問題を教えてくださ...
-
java 大文字と小文字を入れ替える
-
同じ文字を探しカウントしたい
おすすめ情報