c# - 将短名称转换为完整名称
问题描述
我有一个List<string>
:
List<string> ListaClientes = new List<string>();
ListaClientes.Add("CERTIFIC ENERGÉT");
ListaClientes.Add("EDIFÍCIO INDUSTRIAL");
我有一个TextBox1
读取 Excel 单元格的文本框 ( )。我有另一个文本框 ( TextBox2
),我想在列表中显示长名称。例如,如果TextBox1
display CE
,它必须显示 on TextBox2
CERTIFIC ENERGÉT
。如果TextBox1
显示EI
,它必须显示在TextBox2
EDIFÍCIO INDUSTRIAL
我怎样才能做到这一点?谢谢你。
解决方案
对于给定的List<string>
List<string> ListaClientes = new List<string>() {
"CERTIFIC ENERGÉT",
"EDIFÍCIO INDUSTRIAL",
};
让我们构建一个Dictionary<string, string>
whereKey
是用户输入 ( TextBox1.Text
) 的地方,比如"CE"
和Value
是一个相应的文本"CERTIFIC ENERGÉT"
:
{
{"CE", "CERTIFIC ENERGÉT"},
{"EI", "EDIFÍCIO INDUSTRIAL"},
}
如果您希望缩写作为键,您可以使用正则表达式:
using System.Text.RegularExpressions;
...
// Extracts all capital letters from each word
Func<string, string> abbreviation = (value) => string.Concat(Regex
.Matches(value, @"\b\p{Lu}")
.Cast<Match>()
.Select(match => match.Value));
Dictionary<string, string> dict = ListaClientes
.GroupBy(item => abbreviation(item), StringComparer.OrdinalIgnoreCase)
.ToDictionary(group => group.Key,
group => group.First(), // In case of conflict, use 1st text
StringComparer.OrdinalIgnoreCase);
然后,您可以轻松映射:
TextBox2.Text = dict.TryGetValue(TextBox1.Text.Trim(), out var text)
? text // we have a corresponding text
: TextBox1.Text; // we don't have corresponding text, let's repeat TextBox1.Text
推荐阅读
- gitlab-ci - 为同一项目和不同分支并行运行作业
- python - 奇偶校验子集和动态规划 Python 解决方案
- r - 函数适用于数据框,但使用 lapply 时出错
- c++ - OpenGL更新缓冲区如何影响速度
- r - 带有文件路径字符列表的 R for 循环仅在第一个文件上运行
- asp.net - 问题,如何查询数据库以按流派 id 浏览专辑?
- django - /accounts/register/get_success_url() 处的 Django 注册类型错误缺少 1 个必需的位置参数:“用户”
- python - 将具有 4 个参数的函数应用于 groupby 对象
- arrays - 来自对象的数组 - Angular 8 / Ionic
- git - 合并两个版本的 bpmn (xml) 文件