如何从分号分隔的列表<字符串>中删除逗号字符

本文关键字:字符串 删除 字符 列表 分隔 | 更新日期: 2023-09-27 17:57:22

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

但是查看日志时,用户在每封电子邮件后输入逗号","字符,这导致了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(",")));

如何从分号分隔的列表<字符串>中删除逗号字符

这取决于删除所有逗号是什么意思。要删除整个text中的逗号:

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

在您的情况下,它将是

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

逗号转换为分号

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

要删除所有包含逗号的电子邮件,请执行以下操作:

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

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

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

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

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

我会用正则表达式分开:

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

您可以尝试此方法:

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

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

编译器错误是因为收件人是列表而不是字符串,并且列表没有拆分方法。

因此,请使用 List.RemoveAll 方法:

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