Как рандомизировать регистр текста

kuraje

Client
Регистрация
07.03.2020
Сообщения
25
Благодарностей
7
Баллы
3
Подскажите пожалуйста, как максимально быстро рандомизировать регистр текста?

к примеру мой текст: привет, как дела?

нужно максимальное количество рандомизации регистра букв, например: ПрИвеТ, КаК дЕла?
 
Последнее редактирование модератором:

Bablozavr

Client
Регистрация
26.01.2018
Сообщения
310
Благодарностей
163
Баллы
43
Первое, что пришло в голову:

Берем строку;
Разбиваем на символы;
Обрабатываем этот массив символов в случайном порядке, используя функцию ToUpper() (С#);
Собираем строку обратно.

Возможно есть более интересное решение.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 478
Благодарностей
8 692
Баллы
113
Подскажите пожалуйста, как максимально быстро рандомизировать регистр текста?

к примеру мой текст: привет, как дела?

нужно максимальное количество рандомизации регистра букв, например: ПрИвеТ, КаК дЕла?
Попробуйте еще такой вариант, без списка.
Берем случайный символ, заменяем его на Upcase, выполняем в цикле с кол-вом итераций равным кол-ву символов в исх. фразе. Способ топорный, конечно, но работает. :-)

71418


71416
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: kuraje и Lextor

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
Так - просто рандом.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
List<int> rand = new List<int>(){0,1};
foreach(char c in text){
    rand.Shuffle();
    if(rand[0] == 0)
        text1 += c.ToString().ToUpperInvariant();
    else
        text1 += c;
}
return text1;
А так - максимальное количество, то есть, каждая вторая буква.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
bool rand = true;
foreach(char c in text){
    if(rand){
        string d = c.ToString().ToUpperInvariant();
        text1 += d;
        if(c.ToString() != d)
            rand = false;
        }
    else{
        text1 += c;
        rand = true;
    }
}
return text1;
Второй вариант вернет именно такой формат, как в Вашем примере, но я бы использовал всегда первый, если это только не для ников в CS.
 

kuraje

Client
Регистрация
07.03.2020
Сообщения
25
Благодарностей
7
Баллы
3
Так - просто рандом.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
List<int> rand = new List<int>(){0,1};
foreach(char c in text){
    rand.Shuffle();
    if(rand[0] == 0)
        text1 += c.ToString().ToUpperInvariant();
    else
        text1 += c;
}
return text1;
А так - максимальное количество, то есть, каждая вторая буква.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
bool rand = true;
foreach(char c in text){
    if(rand){
        string d = c.ToString().ToUpperInvariant();
        text1 += d;
        if(c.ToString() != d)
            rand = false;
        }
    else{
        text1 += c;
        rand = true;
    }
}
return text1;
Второй вариант вернет именно такой формат, как в Вашем примере, но я бы использовал всегда первый, если это только не для ников в CS.
Большое спасибо! :-)
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Так - просто рандом.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
List<int> rand = new List<int>(){0,1};
foreach(char c in text){
    rand.Shuffle();
    if(rand[0] == 0)
        text1 += c.ToString().ToUpperInvariant();
    else
        text1 += c;
}
return text1;
А так - максимальное количество, то есть, каждая вторая буква.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
bool rand = true;
foreach(char c in text){
    if(rand){
        string d = c.ToString().ToUpperInvariant();
        text1 += d;
        if(c.ToString() != d)
            rand = false;
        }
    else{
        text1 += c;
        rand = true;
    }
}
return text1;
Второй вариант вернет именно такой формат, как в Вашем примере, но я бы использовал всегда первый, если это только не для ников в CS.
Большое спасибо! :-)
Так - просто рандом.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
List<int> rand = new List<int>(){0,1};
foreach(char c in text){
    rand.Shuffle();
    if(rand[0] == 0)
        text1 += c.ToString().ToUpperInvariant();
    else
        text1 += c;
}
return text1;
А так - максимальное количество, то есть, каждая вторая буква.
C#:
string text = "Привет, как дела";
string text1 = string.Empty;
bool rand = true;
foreach(char c in text){
    if(rand){
        string d = c.ToString().ToUpperInvariant();
        text1 += d;
        if(c.ToString() != d)
            rand = false;
        }
    else{
        text1 += c;
        rand = true;
    }
}
return text1;
Второй вариант вернет именно такой формат, как в Вашем примере, но я бы использовал всегда первый, если это только не для ников в CS.
Сниппет хорошо работает, а вот как
1. -- взять файл
2. -- из него взять имя
3. -- изменить
4. -- и сохранить с новым именем

Никак не соображу, не получается. Помогите, кто знает решение?
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83

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