Техніка CSS нормальна, але лише змінює подання рядка в браузері. Кращий метод - це зробити сам текст великими літерами перед надсиланням у браузер.
Більшість з наведених вище влучень є нормальними, але жодне з них не вирішує питання того, що відбувається, якщо у вас є змішані регістри, які потрібно зберегти, або якщо ви хочете використовувати справжній регістр заголовка, наприклад:
"Де вивчати курси PHd в США"
або
"Форма IRS UB40a"
Також за допомогою CultureInfo.CurrentCulture.TextInfo.ToTitleCase (рядок) зберігаються великі регістри, як у "sport and MLB baseball", який стає "Sports And MLB Baseball", але якщо вся рядок поставлена у верхньому регістрі, це спричиняє проблему.
Отже, я зібрав просту функцію, яка дозволяє зберігати великі та мішані регістри та робити маленькі слова малими (якщо їх немає на початку та в кінці фрази), включаючи їх до масивів рядків specialCases і lowerCases:
public static string TitleCase(string value) {
string titleString = "";
if (!String.IsNullOrEmpty(value)) {
string[] lowerCases = new string[12] { "of", "the", "in", "a", "an", "to", "and", "at", "from", "by", "on", "or"};
string[] specialCases = new string[7] { "UK", "USA", "IRS", "UCLA", "PHd", "UB40a", "MSc" };
string[] words = value.ToLower().Split(' ');
bool wordAdded = false;
int counter = 1;
foreach (string s in words) {
foreach (string lcWord in lowerCases) {
if (s.ToLower() == lcWord) {
if (counter == 0 || counter == words.Length) { break; };
titleString += lcWord;
wordAdded = true;
break;
}
}
foreach (string scWord in specialCases) {
if (s.ToUpper() == scWord.ToUpper()) {
titleString += scWord;
wordAdded = true;
break;
}
}
if (!wordAdded) {
titleString += char.ToUpper(s[0]) + s.Substring(1).ToLower();
}
wordAdded = false;
if (counter < words.Length) {
titleString += " ";
}
counter++;
}
}
return titleString;
}
Це лише швидкий і простий метод - і, можливо, його можна трохи вдосконалити, якщо ви хочете витратити на це більше часу.
якщо ви хочете зберегти великі літери менших слів, таких як "a" та "of", просто видаліть їх із масиву рядків для особливих випадків. Різні організації мають різні правила щодо використання великих літер.
Ви можете побачити приклад цього коду в дії на цьому веб-сайті: Пожертвування яєць Лондон - цей сайт автоматично створює стежки в верхній частині сторінок, аналізуючи URL-адресу, наприклад "/ services / uk-egg-bank / Introduction" - потім кожен у назві папки у сліді дефіси замінено на пробіли, а назва папки пишеться з великої літери, тому uk-egg-bank стає UK Egg Bank. (зберігаючи верхній регістр "Великобританія")
Розширенням цього коду може бути наявність таблиці пошуку абревіатур та великих / малих слів у спільному текстовому файлі, таблиці бази даних або веб-службі, щоб список змішаних регістрів можна було вести з одного місця та застосовувати до багатьох різних програми, які покладаються на функцію.