相关疑难解决方法(0)

枚举或表格?

我正在制作一个社区维基,因为我会欣赏人们的方法而不一定是答案.

我处于这样的情况,我有很多查找类型数据字段,不会改变.一个例子是:

年薪工资
选择:0 - 25K
期权:25K - 100K
期权:100K +

我希望通过枚举轻松获得这些选项,但也希望在DB中提供文本值,因为我将报告文本值而不是ID.此外,由于它们是静态的,我不想调用DB.

我想在枚举和表格中重复这个,但是想听一些其他的想法.

谢谢

c# enums

7
推荐指数
2
解决办法
6498
查看次数

CamelCase转换为友好名称,即Enum常量; 问题?

在我回答这个问题,我提到,我们用UpperCamelCase解析得到不装饰的Description属性的枚举常量的描述,但它是天真的,并没有适用于所有情况.我重温了它,这就是我提出的:

var result = Regex.Replace(camelCasedString, 
                            @"(?<a>(?<!^)[A-Z][a-z])", @" ${a}");
result = Regex.Replace(result,
                            @"(?<a>[a-z])(?<b>[A-Z0-9])", @"${a} ${b}");
Run Code Online (Sandbox Code Playgroud)

第一次更换寻找一个大写字母,然后是小写字母,除非大写字母是字符串的开始(以避免回去和修剪),并增加了前面的空间.它处理您的基本UpperCamelCase标识符,并领导像FDICInsured这样的全高级缩写词.

第二个替换查找小写字母后跟一个大写字母或数字,并在两者之间插入一个空格.这是处理中间或结尾的首字母缩写词或数字的特别,但通常情况下在标识符(除领先的数字,这通常被禁止C风格的语言反正).

运行一些基本的单元测试,这两者的结合正确分离以下所有标识符:NoDescription,HasLotsOfWords,AAANoDescription,ThisHasTheAcronymABCInTheMiddle,MyTrailingAcronymID,TheNumber3,IDo3Things,IAmAValueWithSingleLetterWords和基本(其中没有任何空格添加).

所以,我首先发布这个与其他可能认为有用的人分享,然后再问两个问题:

  1. 任何人都会看到一个符合常见的CamelCase-ish约定的情况,这种情况不会被正确地分成友好的字符串吗?我知道它不会缩略语相邻(FDICFCUAInsured)分开,资产重组"正确"的缩略语驼峰像FdicInsured,或大写lowerCamelCased标识符的第一个字母(但一个很容易补充- result = Regex.Replace(result, "^[a-z]", m=>m.ToString().ToUpper());).还要别的吗?

  2. 任何人都可以看到一种方式来做出这样的陈述,或者更优雅吗?我正在寻找组合替换调用,但由于他们对匹配执行两个不同的事情,因此无法使用这两个字符串完成.它们可以组合成一个方法链,在String上使用RegexReplace扩展方法,但任何人都可以想到更好吗?

c# regex string

5
推荐指数
1
解决办法
5390
查看次数

标签 统计

c# ×2

enums ×1

regex ×1

string ×1