Есть ли способ для меня, чтобы преобразовать Ореилли в О'Рейли? - PullRequest
0 голосов
/ 27 мая 2019

Я хотел бы отображать имена в регистре заголовков, а также правильно преобразовывать дефисные имена - такие как O'Reilly.

Прямо сейчас, когда я использую функцию ToUpperCase, я получаю "O'reilly", а это не то, что я хочу.

Вот функция, которую я использую:

@functions
{
    public static class TextConvert
    {
        public static string ToTitleCase(string s)
        {
            s = s.ToLower();
            return Regex.Replace(s, @"(^\w)|(\s\w)",b => b.Value.ToUpper());
        }
    }
}

Как я могу это сделать, учитывая случаи, подобные О'Рейли?

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Вы можете попробовать.

var titlecase = PrintName("o'riley");

Вызовите эту функцию

Public static string PrintName(string StrValue)//pass here - o'riley
        {
            if (!string.IsNullOrEmpty(StrValue))
            {
                return Regex.Replace(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(StrValue.ToLower()),
                 "['-](?:.)", m => m.Value.ToUpperInvariant());
            }
            else
            {
                return "Something meaningful message";
            }
        } 
0 голосов
/ 27 мая 2019

Вы не можете сделать это только с помощью технических инструментов.Есть африканские имена, которые не начинаются с заглавной буквы вообще.Как вы можете видеть в этой утилите (http://www.johncardinal.com/tmgutil/capitalizenames.htm),, самый простой выход - это создать список исключений и сопоставить его с вашим именем.

...