C# toTitleCase,同时保留在word大写字母中
我正在使用反射调用方法并访问C#中的属性。这些属性和方法的名称已经声明(在特定数据源的字符串中),但不是以“方法友好”的方式 例如,特定对象具有属性“HasAModifiedShortStyle” 在运行时,我不知道这一点。我知道我正在寻找一个用“具有修改的ShortStyle”描述的房产 因此,简单的方法是使用C# toTitleCase,同时保留在word大写字母中,c#,string,C#,String,我正在使用反射调用方法并访问C#中的属性。这些属性和方法的名称已经声明(在特定数据源的字符串中),但不是以“方法友好”的方式 例如,特定对象具有属性“HasAModifiedShortStyle” 在运行时,我不知道这一点。我知道我正在寻找一个用“具有修改的ShortStyle”描述的房产 因此,简单的方法是使用 System.Globalization.CultureInfo.CurrentCulture.TextInfo) 并以“”取代“”一词 这很好,但是TextInfo.ToTitle
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的答案满足了需要,但所有其他与案例相关的问题都可以通过这个答案轻松解决。