【发布时间】:2010-08-02 09:48:40
【问题描述】:
我需要一个函数来接受一个字符串和“pascal case”。新单词开始的唯一指示符是下划线。以下是一些需要清理的示例字符串:
- price_old => 应该是 PriceOld
- rank_old => 应该是 RankOld
我开始研究一个使第一个字符大写的函数:
public string FirstCharacterUpper(string value)
{
if (value == null || value.Length == 0)
return string.Empty;
if (value.Length == 1)
return value.ToUpper();
var firstChar = value.Substring(0, 1).ToUpper();
return firstChar + value.Substring(1, value.Length - 1);
}
上述函数没有做的是删除下划线和“ToUpper”下划线右侧的字符。
此外,关于如何对没有任何指示符(如下划线)的字符串进行帕斯卡大小写的任何想法。例如:
- 公司来源
- 财务趋势
- 会计变更类型
这里的主要挑战是确定一个单词的结尾和另一个单词的开头。我想我需要某种查找字典来确定新词从哪里开始?我们那里已经有图书馆可以做这种事情了吗?
谢谢,
保罗
【问题讨论】:
-
一个简短的评论 - 那是帕斯卡案例。 Camel case 以小写字母开头,例如
rankOld. -
@Jon O,很高兴知道......正在更新......
-
另一个快速评论 - 当您想要从某个起点开始的整个子字符串时,没有必要指定长度。所以代替 value.Substring(1, value.Length - 1) 你可以简单地做 value.Substring(1).
-
@Anton 感谢您的提示,我将开始使用较短的重载。
-
警告词:如果你沿着字典路径去识别字符串的组成部分,而没有指示每个单词的开始和结束位置,那么要非常小心,否则你可能会得到意想不到的结果——专家交流的人可能会告诉你更多关于这个问题的信息。
标签: c# regex camelcasing