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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 002
Благодарностей
6 447
Баллы
113
привет, нужен снип, который будет в прописную(маленькую) букву делать заглавной.

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

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

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

usboff

Client
Регистрация
25.08.2021
Сообщения
81
Благодарностей
45
Баллы
18
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);
 
Последнее редактирование:
  • Спасибо
Реакции: backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 002
Благодарностей
6 447
Баллы
113
код работает, но увеличивает несколько букв слова, нужно только одну

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

usboff

Client
Регистрация
25.08.2021
Сообщения
81
Благодарностей
45
Баллы
18
код работает, но увеличивает несколько букв слова, нужно только одну

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

126288
 
  • Спасибо
Реакции: backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 002
Благодарностей
6 447
Баллы
113

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)