c# - 如何使用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
推荐阅读
- database - 为基于 SaaS 的解决方案设计数据模型
- javascript - 异步 JavaScript 中存在哪些保证?
- c# - C# 将鱼眼展平为 AI 的矩形
- python - 在热图顶部的辅助 y 轴上创建线图 在错误的 x 轴上绘制线
- html - 列中的 CSS 显示列表
- groovy - 上一年的开始
- c++ - 在返回值容器类型中使用类型参数
- css - 使用 TailwindCSS 悬停时的环形颜色
- logging - 当批处理失败时,是否有任何适当的日志记录机制使用我捕获通过 Cron 作业安排的数据移动 jar 文件的日志?
- wordpress - wp_kses_post 函数中允许使用哪些 HTML?