用列表中的另一个字母替换字母

时间:2013-12-22 19:26:00

标签: c#

我有一个清单

List<string> myList = new List<string>();
myList.Add("A");
myList.Add("B");
myList.Add("C");
...
...
...
myList.Add("Z");

现在我要替换A with NB with Xso on..........

我知道有Replace(string, string)

但有没有简单的方法呢?

5 个答案:

答案 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