Как озаглавить рандомную букву слова?

backoff

Client
Joined
Apr 20, 2015
Messages
6,180
Reaction score
6,534
Points
113
привет, нужен снип, который будет в прописную(маленькую) букву делать заглавной.

пример
Маша любит смотреть на огонь

на выходе должно получиться
МаШа лЮбит смоТреть на огОнь

словом должно считаться слово из 3х и более букв
 

usboff

Client
Joined
Aug 25, 2021
Messages
106
Reaction score
73
Points
28
C#:
string input = "Маша любит смотреть на огонь";

// Разделяем строку на слова
string[] words = input.Split(' ');

Random rnd = new Random(); // Для случайного выбора индекса

for (int i = 0; i < words.Length; i++)
{
    // Проверяем, что длина слова >= 3
    if (words[i].Length >= 3)
    {
        char[] chars = words[i].ToCharArray();

        // Для первого слова оставляем первую заглавную, если она есть
        if (i == 0 && char.IsUpper(chars[0]))
        {
            // Все остальные буквы делаем прописными
            for (int j = 1; j < chars.Length; j++)
            {
                chars[j] = char.ToLower(chars[j]);
            }

            // Выбираем случайную букву начиная со 2-й для заглавной
            int indexToCapitalize = rnd.Next(1, chars.Length);
            chars[indexToCapitalize] = char.ToUpper(chars[indexToCapitalize]);
        }
        else
        {
            // Делаем все буквы прописными
            for (int j = 0; j < chars.Length; j++)
            {
                chars[j] = char.ToLower(chars[j]);
            }

            // Выбираем случайную букву начиная с первой для заглавной
            int indexToCapitalize = rnd.Next(0, chars.Length); // Первая буква тоже может быть выбрана
            chars[indexToCapitalize] = char.ToUpper(chars[indexToCapitalize]);
        }

        // Обновляем слово
        words[i] = new string(chars);
    }
}

// Собираем обратно строку
string result = string.Join(" ", words);


project.SendInfoToLog(result);
 
Last edited:
  • Thank you
Reactions: backoff

backoff

Client
Joined
Apr 20, 2015
Messages
6,180
Reaction score
6,534
Points
113
код работает, но увеличивает несколько букв слова, нужно только одну

нужно- приВет
не нужно - ПрИвЕт
 

usboff

Client
Joined
Aug 25, 2021
Messages
106
Reaction score
73
Points
28
код работает, но увеличивает несколько букв слова, нужно только одну

нужно- приВет
не нужно - ПрИвЕт
Да, я обратил на это внимание и изменил сообщение, проверь теперь.

126288
 
  • Thank you
Reactions: backoff

backoff

Client
Joined
Apr 20, 2015
Messages
6,180
Reaction score
6,534
Points
113

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)