如何使用LINQ C#根据另一个字符串更改字符串内容

时间:2018-11-04 17:36:58

标签: c# string linq stringbuilder

在我的作业中,我有一个任务来复制谜题机器。 所以我要建立反射器零件。 反射器的配置如下:

  

YRUHQSLDPXNGOKMIEBFZCWVJAT

并且任务是针对字符串中的每个字符, 我需要在配置位置将其替换为相应的字符, 假设文本仅包含大写字母。 例如,假设我有这样的输入:

  

ABCXYZ

所以答案将是 “ YRUJAT”

所以我做了一个这样的函数:

number|object

但是我感觉可以使用LINQ函数将其做得更好。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我不一定会使用更好一词,但可能会使用更少的代码行,这是使用linq的实现:

var result = new string(msg.Select(c => m_configuration[Helper.ABC.IndexOf(c)]).ToArray());

通常,将foreach替换为投影(.Select),然后将其全部作为string构造函数的输入。

作为一个简短的独立示例:

var configuration = "YRUHQSLDPXNGOKMIEBFZCWVJAT";
var abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var input = "ABCXYZ";
var result = new string(input.Select(c => configuration[abc.IndexOf(c)]).ToArray());
Console.WriteLine(result);    // YRUJAT