如何使用 LINQ C# 根据另一个字符串更改字符串内容
How to change a string content according to another string with LINQ C#
在我的家庭作业中,我有一个任务是复制谜机。
所以我正在构建反射器部分。
反射器有这样的配置:
YRUHQSLDPXNGOKMIEBFZCWVJAT
任务是针对字符串中的每个字符,
我需要替换成配置位置对应的字符,
假设文本只包含大写字母。
例如,假设我有这样的输入:
ABCXYZ
所以答案是
"YRUJAT"
所以我做了一个这样的函数:
public string GetReflectedString(string msg)
{
StringBuilder answer = new StringBuilder();
foreach (char item in msg)
{
answer.Append(m_configuration[Helper.ABC.IndexOf(item.ToString().ToUpper())]);
}
return answer.ToString();
}
但我觉得这可以通过 LINQ 函数做得更好。
有人可以帮忙吗?
我不一定会使用更好这些词,但可能会使用更少的代码行,这是一个使用 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
在我的家庭作业中,我有一个任务是复制谜机。 所以我正在构建反射器部分。 反射器有这样的配置:
YRUHQSLDPXNGOKMIEBFZCWVJAT
任务是针对字符串中的每个字符, 我需要替换成配置位置对应的字符, 假设文本只包含大写字母。 例如,假设我有这样的输入:
ABCXYZ
所以答案是 "YRUJAT"
所以我做了一个这样的函数:
public string GetReflectedString(string msg)
{
StringBuilder answer = new StringBuilder();
foreach (char item in msg)
{
answer.Append(m_configuration[Helper.ABC.IndexOf(item.ToString().ToUpper())]);
}
return answer.ToString();
}
但我觉得这可以通过 LINQ 函数做得更好。 有人可以帮忙吗?
我不一定会使用更好这些词,但可能会使用更少的代码行,这是一个使用 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