2016-07-18 2 views
1

安全に処理するためにセミコロンで区切られた電子メールのリストを作成しました。セミコロンで区切られたリストからコンマを削除する方法<string>?

ログを見ると、各メールの後にカンマ「、」が入力され、An invalid character was found in the mail header: ','というエラーが発生しました。私はリストから文字を削除するにはそこに他の回答を見ていたし、下記の使用してLINQのを試してみました

//Remove any invalid commas from the recipients list 
recipients = string.Join(" ", recipients .Split().Where(w => !recipients.Contains(","))); 

しかし、コンパイラはList<string>が存在しない.Split()の定義が含まれていないことを私に伝えます現在の状況では、処理されたリストは、 ";"で区切られたままであることが重要です。カンマを削除した後はセミコロンで区切ります。

質問:

どのように私は、セミコロン区切りのリストからコンマ文字を削除することができますか?

コード:受信者が一覧でない文字列であり、そしてリストのスプリットメソッドを持っていないので、

List<string> recipients = new List<string>(); 

//Split the additional email string to List<string> 
// (check that the string isn't empty before splitting) 
if(string.IsNullOrEmpty(adContacts.AdditionalEmails) != true) 
{ recipients = adContacts.AdditionalEmails.Split(';').ToList(); } 


//Remove any invalid commas from the recipients list 
recipients = string.Join(" ", text.Split().Where(w => !recipients.Contains(","))); 
+0

'テキスト= text.Replace( ""、 "");'?すべてのカンマを削除するには?確かにセミコロンでカンマを置き換えてください。 –

+3

またはAM Iポイントを逃し – BugFinder

+0

コードを振り返ると、私のadContacts.AdditionalEmails文字列がすでにセミコロンで区切られたので、私はちょうどコンマを削除するために必要とされる: 'adContacts.AdditionalEmails.Replace(「」、『』);受信者= adContacts.AdditionalEmails.Splitは( ';')。ToListメソッド(); ' –

答えて

2

それはあなたがすべてのコンマを削除によって意味ですかによって異なります。あなたのケースでは

text = text.Replace(",", ""); 

それはセミコロン

text = text.Replace(',', ';'); 

recipients = adContacts.AdditionalEmails 
    .Replace(",", "") 
    .Split(';') 
    .ToList(); // <- do you really want to convert array into a list? 

に変換 commansになりますすべての電子メールを削除する:全体textカンマを削除にはコンマが含まれます:

recipients = string.Join(";", text 
    .Split(';') 
    .Where(w => !w.Contains(","))); 

最後に、あなたは有効な区切りだけでなく、セミコロンとしてカンマを扱うことができます。

var eMails = text.Split(new char[] {';', ','}, StringSplitOptions.RemoveEmptyEntries); 
+0

私は実際に代わりadContacts.AdditionalEmails文字列から削除されている必要があります。ですから、私の場合は以下のように動作します: 'adContacts.AdditionalEmails.Replace("、 "、" "); 受信者= adContacts.AdditionalEmails.Split(「;」)。ToListメソッド(); ' まず、文字列中に既に存在するセミコロン区切り文字で分割、任意のカンマを削除。 –

+0

@Brian J: 'Remove' *は*文字列を変更しないことを、何卒ご了承下さいますが、(そう、' adContacts.AdditionalEmails.Replace( ""、 "")* *新しいものを返す; '新しいを作成します。文字列を入力してからドロップします)。 '受信者= adContacts.AdditionalEmails.Replace( ""、 "").Split( ';')。ToListメソッド();' –

0

コンパイラエラーがあります。

のでList.RemoveAllメソッドを使用します。

// Remove any invalid commas from the recipients list. 
recipients = string.Join(" ", recipients.RemoveAll(item => item.Contains(","))); 
+0

私はOPは* *セミコロンに*カンマを置き換える代わりに*削除を希望していること、賭ける思います。 – Dennis

0

あなたはセミコロンですべてのカンマを置き換えたいことがあります。

recipients=recipients.Replace(",",";"); 
0

このアプローチを試すことができます:

List<string> newRecipients = recipients 
    .Select(r => String.Join(";", r.Split(',', ';'))) 
    .ToList(); 

これは、すべての受信者を可能なカンマとセミコロンの区切り文字で分割します。その後、正しいセミコロンで新しい受信者を作成します。私は正規表現で分割したい

0

Regex.Split(input, @"[\,\;]+").Where(s => !string.IsNullOrWhiteSpace(s)) 
関連する問題