C#构建一个字符串,评估另一个字符串作为模板/规则/格式

C#构建一个字符串,评估另一个字符串作为模板/规则/格式,c#,string,string-concatenation,C#,String,String Concatenation,我正在考虑一个应用程序,它根据用户所属的类别构建某种用户名。当我尝试从表中包含的规则生成此用户名时,问题就开始了 例如: 数据表 规则数据表 最后我想得到一个结果: | ID | Username | |----|------------| | 1 | JonhLondon | | 2 | ChrisParis | | 3 | A.Madrid | | 4 | MRC | 因此,我在想,是否有一种很好的方法可以使用规则表中包含的字符串作为模板来构建用户名,就像:

我正在考虑一个应用程序,它根据用户所属的类别构建某种用户名。当我尝试从表中包含的规则生成此用户名时,问题就开始了

例如:

数据表 规则数据表 最后我想得到一个结果:

| ID | Username   |
|----|------------|
| 1  | JonhLondon |
| 2  | ChrisParis |
| 3  | A.Madrid   |
| 4  | MRC        |
因此,我在想,是否有一种很好的方法可以使用规则表中包含的字符串作为模板来构建用户名,就像:

string Name = dtData[i].Name;
string City = dtData[i].City;
string Level = dtData[i].Level;
string u = SomeGreatMethodToEvaluate(dtRules[dtData[i].Rule].Format);
dtFinal[i].Username = u;
抱歉,如果我解释得不够好,但这对我来说是一件棘手的事情。

这是一个模板引擎,可以很好地安装在这里。使用DotLiquid,您的规则基本上成为模板,然后将数据输入其中,生成所需的结果:

1. {{ name }}{{ city }}
2. {{ name | first | upcase }}{{ city | first | upcase }}{{ level }}
3. {{ name | first | upcase }}.{{ city }}

当您使用自己的规则集时,您必须自己解析它们。
但是,当您使用一组标准的规则时,例如,您可能会发现一些东西或。

我会尝试利用
String.Format
来实现这一点。您可以将格式字符串存储在数据库中,并以一致的方式传递参数,例如名称、城市、级别、规则。像
“Name+City”
这样的模式变得非常简单,它只需要格式字符串
“{0}{1}”


String.Format
不支持将部分
Strings
开箱即用,但您可以使用
IFormatProvider
和自定义类来包装字符串,以扩展其功能。相关问题中有一些很好的提示:。

我认为你已经很好地解释了你的问题,问题是我认为没有一篇文章就无法回答这个问题-这篇文章太宽泛了。如果你需要模板,Razor是非常有效的,如果你想编写自己的模板语法,超出这里的答案范围,祝你好运如果任务很简单,就使用一个格式字符串。我想我会尝试这样做,以避免在服务器上安装一些外部软件包,但我应该看看如何使用这些模式。无论如何,我必须先创建自己的类来包装字符串并分析规则。非常感谢。
string Name = dtData[i].Name;
string City = dtData[i].City;
string Level = dtData[i].Level;
string u = SomeGreatMethodToEvaluate(dtRules[dtData[i].Rule].Format);
dtFinal[i].Username = u;
1. {{ name }}{{ city }}
2. {{ name | first | upcase }}{{ city | first | upcase }}{{ level }}
3. {{ name | first | upcase }}.{{ city }}