用正则表达式随机化大小写

时间:2019-05-20 21:11:14

标签: regex

假设我有任何随机字符串,例如。 G。 I want this randomized!

我需要一个正则表达式使它看起来像i WaNT thIs RaNdOMizEd!I WAnt ThiS RAndomIzED!等。

正则表达式似乎是最佳选择,因为我只能使用lowerCaseupperCase ...

4 个答案:

答案 0 :(得分:1)

这里不需要正则表达式。

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的小写版本添加到最终字符串中。

Try it online!您可以看到它运行正常。

答案 1 :(得分:0)

我认为正则表达式不是正确的解决方案。试试

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!'

答案 2 :(得分:0)

我看不到正则表达式的明显答案。但是这是您可以尝试用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!

答案 3 :(得分:0)

使用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之间,用于确定字符是否应为大写。

  • 内置的Character方法用于转换。