toTitleCase同时保留in-word upperCasing

时间:2011-03-30 08:50:29

标签: c# string

我正在使用反射来调用C#中的方法和访问属性。已经声明了这些属性和方法的名称(来自某个数据源的字符串),但不是“方法友好”的方式。

例如,特定对象具有属性“HasAModifiedShortStyle” 在运行时我不知道这一点。我知道我正在寻找一个用“有一个修改过的ShortStyle”描述的属性。

所以很容易就是使用

转换为TitleCase
System.Globalization.CultureInfo.CurrentCulture.TextInfo)

并将“”替换为“”。

这很好用,但TextInfo.ToTitleCase()将“ShortStyle”更改为“Shortstyle”。小写的's'导致我找不到propertyName。 作为参考,我正在使用

访问该属性
currentObjectValue.GetType().GetProperty(propertyName);

是否有一种简单的方法可以转换为TitleCase,同时保留字内的capitilization?

3 个答案:

答案 0 :(得分:1)

只需将其用于说明中的每个字词:

yourString[0].ToString().ToUpper() + yourString.Substring(1)

答案 1 :(得分:1)

这种做法怎么样?

currentObjectValue.GetType().GetProperties().FirstOrDefault(propInfo => propInfo.Name.Equals("Shortstyle", StringComparison.InvariantCultureIgnoreCase));

答案 2 :(得分:0)

这会将描述字符串拆分为单个单词,将第一个字母大写,然后将它们连接回一个字符串:

string s = "has a modified ShortStyle";
propName = string.Join(string.Empty, 
                       (from word in s.Split(' ')
                        select word.Substring(0, 1).ToUpper() + word.Substring(1)).ToArray());