我创建了一个以分号分隔的电子邮件列表,以便安全处理。
但是查看日志时,用户输入逗号","每封电子邮件后的字符,导致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(",")));
答案 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))