Рандомизация капитализации с помощью регулярных выражений - PullRequest
0 голосов
/ 21 мая 2019

Предположим, у меня есть любая случайная строка, например, I want this randomized!.

Мне нужно регулярное выражение, чтобы оно выглядело как i WaNT thIs RaNdOMizEd! или I WAnt ThiS RAndomIzED! и т. Д.

Регулярное выражение кажется лучшимвыбор, видя в качестве единственных других функций, которые я могу использовать, это lowerCase и upperCase ...

Ответы [ 4 ]

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

Здесь нет необходимости в регулярном выражении.

import random

your_string = input()
final = ""

for char in your_string:
    if round(random.random()):
        final += char.upper()
    else:
        final += char.lower()

print(final)

Объяснение:

  • Получите ввод от пользователя.
  • Итерируйте по каждому char в строке.
  • Получить случайное число с плавающей точкой от нуля до единицы и округлить его.
  • Если это число равно 1 (правда), добавьте заглавную версию char в последнюю строку.
  • В противном случае добавьте строчную версию char в окончательную строку.

Попробуйте онлайн! Вы видите, что он работает нормально.

0 голосов
/ 21 мая 2019

Используя Java, здесь достаточно простой подход

   public static String randomize(String s) {
      Random r = new Random();
      char[] chars = s.toCharArray();
      for (int i = 0; i < chars.length; i++) {
         char c = chars[i];
         chars[i] = r.nextInt(2) == 0 ? Character.toUpperCase(c)
               : Character.toLowerCase(c);
      }
      return new String(chars);
   }
  • Случайное число находится в диапазоне от 0 до 1 и используется для определения, должен ли символ быть в верхнем регистре.

  • Для преобразования используются встроенные символьные методы.

0 голосов
/ 21 мая 2019

Я не вижу очевидного ответа с помощью регулярных выражений.Но вот функция, написанная на python 3, которую вы можете попробовать:

import random

def uppper_or_lower_char(char):
  if round(random.random()):
    return char.upper()
  else:
    return char.lower()


def randomizing(string):
  randomized_list = map(lambda char: uppper_or_lower_char(char), string)

  return ''.join(randomized_list)

s = 'I want this randomized!'

print(randomizing(s))

# resutl = i want THIS rAndomIzed!
0 голосов
/ 21 мая 2019

Я думаю, что регулярное выражение не является правильным решением.Попробуйте

import random

s='Hello World!'
new_string = ''.join([x.lower() if random.random()>0.5 else x.upper() for x in s])
new_string

>>> 'HElLo wORlD!'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...