C# toTitleCase,同时保留在word大写字母中

C# toTitleCase,同时保留在word大写字母中,c#,string,C#,String,我正在使用反射调用方法并访问C#中的属性。这些属性和方法的名称已经声明(在特定数据源的字符串中),但不是以“方法友好”的方式 例如,特定对象具有属性“HasAModifiedShortStyle” 在运行时,我不知道这一点。我知道我正在寻找一个用“具有修改的ShortStyle”描述的房产 因此,简单的方法是使用 System.Globalization.CultureInfo.CurrentCulture.TextInfo) 并以“”取代“”一词 这很好,但是TextInfo.ToTitle

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

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

因此,简单的方法是使用

System.Globalization.CultureInfo.CurrentCulture.TextInfo)
并以“”取代“”一词

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

currentObjectValue.GetType().GetProperty(propertyName);

有没有一种简单的方法可以在保持单词大写的同时转换为TitleCase?

只需将其用于描述中的每个单词:

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

这种方法怎么样

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

这会将描述字符串拆分为单个单词,将第一个字母大写,然后将它们重新合并为单个字符串:

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());

谢谢,需要一些简单的实现。遇到了其他问题,比如短语“反程序”需要变成“反程序”,但可能需要单独考虑这些问题。如果我的输入只有字母,这会容易得多!是的,虽然Daniel的答案满足了需要,但所有其他与案例相关的问题都可以通过这个答案轻松解决。