如何从分号分隔的List <string>中删除逗号字符?

时间:2016-07-18 10:56:32

标签: c# linq list character delimiter

我创建了一个以分号分隔的电子邮件列表,以便安全处理。

但是查看日志时,用户输入逗号&#34;,&#34;每封电子邮件后的字符,导致An invalid character was found in the mail header: ','错误。

我确实在查看有关从List中删除字符的其他答案,并使用Linq尝试了以下内容:

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

但编译器告诉我List<string>不包含当前上下文中不存在.Split()的定义。非常重要的是,处理后的List仍然由&#34 ;;&#34;删除逗号后用分号。

问题:

如何从分号分隔的列表中删除逗号字符?

代码:

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(",")));

5 个答案:

答案 0 :(得分:3)

这取决于删除所有逗号的含义。要在整个text删除逗号:

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

在你的情况下,它将是

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

commans转换为分号

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

删除包含逗号的所有电子邮件

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

最后,您可以逗号视为有效分隔符以及分号:

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

答案 1 :(得分:0)

编译错误是因为收件人是List而不是字符串,而List没有Split方法。

所以使用List.RemoveAll方法:

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

答案 2 :(得分:0)

您可能希望用分号替换所有逗号:

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

答案 3 :(得分:0)

您可以尝试这种方法:

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

这将按可能的逗号和分号分隔符分隔每个收件人。然后,它将通过使用正确的分号连接它们来构建新的收件人。

答案 4 :(得分:0)

我用正则表达式分开:

Regex.Split(input, @"[\,\;]+").Where(s => !string.IsNullOrWhiteSpace(s))