Преобразование строки к случаю заголовка

У меня было интересное обсуждение с коллегой о хеш-функции недавно. Наши заключения были следующие:

, Если действительно необходимо записать хорошую хеш-функцию, которая минимизирует коллизии больше, чем реализации по умолчанию, доступные на стандартных языках, Вам нужна ученая степень в области математики.

, Если Вы пишете приложения, где пользовательская хеш-функция заметно улучшит производительность Вашего приложения, Вы - Google, и у Вас есть много Математики PhDs, чтобы сделать работу.

Извините к не непосредственно отвечают на Ваш вопрос, но нижняя строка - то, что нет действительно никакой потребности записать Вашу собственную хеш-функцию для Строки. С каким языком Вы работаете? Я предположил бы, что существует простой способ вычислить "достаточно хороший" хэш-код.

280
задан Olorunfemi Ajibulu 24 April 2018 в 23:52
поделиться

2 ответа

MSDN: TextInfo.ToTitleCase

Убедитесь, что вы включили: using System.Globalization

string title = "war and peace";

TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;

title = textInfo.ToTitleCase(title); 
Console.WriteLine(title) ; //War And Peace

//When text is ALL UPPERCASE...
title = "WAR AND PEACE" ;

title = textInfo.ToTitleCase(title); 
Console.WriteLine(title) ; //WAR AND PEACE

//You need to call ToLower to make it work
title = textInfo.ToTitleCase(title.ToLower()); 
Console.WriteLine(title) ; //War And Peace
511
ответ дан 23 November 2019 в 01:59
поделиться

Попробуйте следующее:

string myText = "a Simple string";

string asTitleCase =
    System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.
    ToTitleCase(myText.ToLower());

Как уже указывалось, использование TextInfo.ToTitleCase может не дать вам точных результатов, которые вы хотите. Если вам нужен больший контроль над выводом, вы можете сделать что-то вроде этого:

IEnumerable<char> CharsToTitleCase(string s)
{
    bool newWord = true;
    foreach(char c in s)
    {
        if(newWord) { yield return Char.ToUpper(c); newWord = false; }
        else yield return Char.ToLower(c);
        if(c==' ') newWord = true;
    }
}

А затем использовать его так:

var asTitleCase = new string( CharsToTitleCase(myText).ToArray() );
132
ответ дан 23 November 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: