我有一个清单
List<string> myList = new List<string>();
myList.Add("A");
myList.Add("B");
myList.Add("C");
...
...
...
myList.Add("Z");
现在我要替换A with N
,B with X
和so on..........
我知道有Replace(string, string)
。
但有没有简单的方法呢?
答案 0 :(得分:6)
mrzli的回答并不错,但我建议加强它。我会写一张地图而不是写一堆代码:
var map = new Dictionary<string, string>() {
{"A", "N"},
{"B", "Z"}, // ... etc
};
var newList = originalList.Select(x=>map[x]).ToList();
答案 1 :(得分:3)
我觉得这里的字典会很有用并且可以重复使用。例如,如果你想创建一个像.MaskValue()之类的扩展方法。无论如何,如果你真的想要替换列表中的值:
var listOfLetters = new List<string> { "A", "B" };
var dictionarySwap = new Dictionary<string,string>{{"A","N"},{"B","X"}};
for (int i = 0; i < listOfLetters.Count; i++)
{
listOfLetters[i] = dictionarySwap[listOfLetters[i]];
}
答案 2 :(得分:2)
你可以尝试这样的东西(需要.NET 3.5):
static void Main(string[] args)
{
List<string> myList = new List<string>();
myList.Add("A");
myList.Add("B");
myList.Add("C");
myList = myList.Select(x => Modify(x)).ToList();
}
private static string Modify(string input)
{
if (input == "A")
{
return "N";
}
else if (input == "B")
{
return "X";
}
else
{
return input;
}
}
答案 3 :(得分:1)
您可以使用IndexOf
,它会为您提供您要查找的元素的索引。
List<string> myList = new List<string>();
myList.Add("A");
myList.Add("B");
myList.Add("C");
// find "A", then replace its contents with "N"
myList[myList.IndexOf("A")] = "N";
这只会替换第一个找到的元素,因此如果您希望列表中有多个"A"
,则必须多次运行此行。
答案 4 :(得分:0)
如果您只有一个字符串变量,我认为最简单的方法是替换函数。 但是我有一个简单的扩展方法,这对于可用的枚举非常方便,所以让我告诉你在这种情况下我做了什么,这是我的功能:
public static class Extensions
{
public static void ForeEach<T>(this IEnumerable<T> instance, Action<T> action)
{
foreach (T item in instance)
{
action(item);
}
}
}
在你的情况下:
List<string> values = new List<string>();
values.Add("A");
values.Add("C");
values.Add("D");
values.Add("E");
values.Add("F");
values.Add("G");
values.Add("A");
values.ForEach(a => { if (a == "A") { a = "new value"; } });
我希望我理解你的意思:D