C# 列表<;字符串>;emailAddress如何替换特定字符串中的值
我有以下方法C# 列表<;字符串>;emailAddress如何替换特定字符串中的值,c#,C#,我有以下方法 /// <summary> /// Replaces SemiColons with commas because SMTP client does not accept semi colons /// </summary> /// <param name="emailAddresses"></param> public static List<string> ReplaceSemiColo
/// <summary>
/// Replaces SemiColons with commas because SMTP client does not accept semi colons
/// </summary>
/// <param name="emailAddresses"></param>
public static List<string> ReplaceSemiColon(List<string> emailAddresses) // Note only one string in the list...
{
foreach (string email in emailAddresses)
{
email.Replace(";", ",");
}
//emailAddresses.Select(x => x.Replace(";", ",")); // Not working either
return emailAddresses;
}
//
///将分号替换为逗号,因为SMTP客户端不接受分号
///
///
公共静态列表替换分号(列出电子邮件地址)//注意列表中只有一个字符串。。。
{
foreach(电子邮件地址中的字符串电子邮件)
{
电子邮件。替换(“;”,“,”);
}
//emailAddresses.Select(x=>x.Replace(“;”,“,”);//也不工作
返回电子邮件地址;
}
但是,电子邮件字符串并没有将“;”替换为“,”。我缺少什么?我想你应该试着把它设置回自己的状态
email=email.Replace(“;”,“,”)代码>我认为您应该尝试将其设置回自身email=email.Replace(“;”,“,”)代码>方法返回新字符串。它不会改变现有的
返回一个新字符串,其中包含指定Unicode的所有匹配项
当前字符串中的一个或多个字符将替换为另一个
指定的Unicode字符或字符串
作为Habib,对当前列表使用foreach
,会得到foreach迭代变量错误。这是一个只读迭代。创建一个新列表,然后向其中添加替换的值
您还可以使用for循环来修改keyboardP解释的现有列表
List newemailAddresses=new List();
foreach(电子邮件地址中的字符串电子邮件)
{
newemailAddresses.Add(email.Replace(“;”,“,”);
}
返回新的电子邮件地址;
请注意,由于字符串是空的,因此无法更改它们。即使您认为您更改了它们,您实际上也创建了新字符串对象。方法返回新字符串。它不会改变现有的
返回一个新字符串,其中包含指定Unicode的所有匹配项
当前字符串中的一个或多个字符将替换为另一个
指定的Unicode字符或字符串
作为Habib,对当前列表使用foreach
,会得到foreach迭代变量错误。这是一个只读迭代。创建一个新列表,然后向其中添加替换的值
您还可以使用for循环来修改keyboardP解释的现有列表
List newemailAddresses=new List();
foreach(电子邮件地址中的字符串电子邮件)
{
newemailAddresses.Add(email.Replace(“;”,“,”);
}
返回新的电子邮件地址;
请注意,由于字符串是空的,因此无法更改它们。即使您认为您更改了字符串,您实际上也创建了新的字符串对象。字符串是不可变的,因此会返回另一个字符串。试一试
for(int i = 0; i < emailAddress.Count; i++)
{
emailAddress[i] = emailAddress[i].Replace(";", ",");
}
for(int i=0;i
foreach循环不会在这里编译,因为您正在尝试更改迭代变量。您会遇到。字符串是不可变的,因此会返回另一个字符串。试一试
for(int i = 0; i < emailAddress.Count; i++)
{
emailAddress[i] = emailAddress[i].Replace(";", ",");
}
for(int i=0;i
foreach循环不会在这里编译,因为您正在尝试更改迭代变量。您会遇到。您应该使用以下内容:
var tmpList=新列表();
将每个修改后的电子邮件地址添加到tmplist
完成后,返回TmpList。
在.NET中,字符串是不可变的,这就是代码不起作用的原因。您应该使用以下内容:
var tmpList=新列表();
将每个修改后的电子邮件地址添加到tmplist
完成后,返回TmpList。
在.NET中,字符串是不可变的,这就是代码不起作用的原因。正如其他人已经提到的,字符串是(string.Replace
将返回一个新字符串,它不会修改现有字符串),并且不能修改foreach
循环中的列表。您可以使用for
循环修改现有列表,也可以使用LINQ创建新列表并将其分配回现有列表。比如:
emailAddresses = emailAddresses.Select(r => r.Replace(";", ",")).ToList();
记住包括使用System.Linq
正如其他人已经提到的,字符串是(string.Replace
将返回一个新字符串,它不会修改现有字符串),并且您不能在foreach
循环中修改列表。您可以使用for
循环修改现有列表,也可以使用LINQ创建新列表并将其分配回现有列表。比如:
emailAddresses = emailAddresses.Select(r => r.Replace(";", ",")).ToList();
记住包括使用System.Linq代码>Soner,您不能修改foreach中的迭代变量不能分配给“email”,因为它是“foreach迭代变量”
@Habib arrrhhhh!愚弄我:)
更新。我认为现在可以了。它看起来不错,但您可以使用一个简单的for
循环,修改现有列表,而不是创建新列表one@Habib你是对的。我引用了一个很好的例子,说明如何使用for
循环来完成。因此,您不能修改foreach中的迭代变量不能分配给“email”,因为它是一个“foreach迭代变量”
@Habib arrhghhh!愚弄我:)
更新。我认为现在可以了。它看起来不错,但您可以使用一个简单的for
循环,修改现有列表,而不是创建新列表one@Habib你是对的。我引用了一个很好的例子来说明如何使用进行循环。+1
用于避免落入foreach
的陷阱,比如我:)
+1
用于避免落入foreach
的陷阱,比如我:)
这就是我所做的——这就是我所做的----