toTitleCase при сохранении верхнего регистра в слове - PullRequest
0 голосов
/ 30 марта 2011

Я использую отражение для вызова методов и доступа к свойствам в C #.Имена этих свойств и методов уже были объявлены (в строках из определенного источника данных), но не «дружественным к методу» образом.

Например, определенный объект имеет свойство «HasAModifiedShortStyle»Во время выполнения я не знаю этого.Я знаю, что ищу свойство, описанное с «имеет измененный ShortStyle».

Так что проще всего конвертировать в TitleCase, используя

System.Globalization.CultureInfo.CurrentCulture.TextInfo)

и заменить «» на «».

Это отлично работает, но TextInfo.ToTitleCase () меняет "ShortStyle" на "Shortstyle".Это нижний регистр 's' заставляет меня не найти propertyName.Для справки, я обращаюсь к свойству с помощью

currentObjectValue.GetType().GetProperty(propertyName);

Есть ли простой способ преобразования в TitleCase при сохранении прописной буквы?

Ответы [ 3 ]

1 голос
/ 30 марта 2011

Как насчет этого подхода?

currentObjectValue.GetType().GetProperties().FirstOrDefault(propInfo => propInfo.Name.Equals("Shortstyle", StringComparison.InvariantCultureIgnoreCase));
1 голос
/ 30 марта 2011

Просто используйте это для каждого слова в вашем описании:

yourString[0].ToString().ToUpper() + yourString.Substring(1)
0 голосов
/ 30 марта 2011

Это разделит строку описания на отдельные слова, заглавную букву, а затем объединит их обратно в одну строку:

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...