将字符串中的随机字母转换为大写/小写

时间:2017-05-14 21:51:57

标签: c# string char

我有一个机器人为我的不和,我正在添加一个命令来发布你最近在Twitter上看到的那些海绵宝贝模因。我基本上必须转换用户输入的字符串,例如This is the string they would enter,它会将其转换为类似THis iS ThE sTRinG thEy WOulD EnTEr

的字符串

我需要基本上将该字符串中的每个字符随机设置为大写或小写。 这就是我所拥有的,它打印出原始字符串而不是转换后的字符串。

commands.CreateCommand("spongememe").Parameter("message", ParameterType.Multiple).Do(async (e) =>
        {
            string message = "";
            for (int i = 0; i < e.Args.Length; i++)
            {
                message += e.Args[i].ToString() + " ";
            }

            char[] array = message.ToCharArray();

            for(int i = 0; i < array.Length; i++)
            {
                if (rnd.Next(0, 2) == 1)
                    Char.ToUpper(array[i]);
                else
                {
                    Char.ToLower(array[i]);
                }
            }

            string newMessage = String.Join("", array);

            await e.Channel.SendMessage(newMessage);

        });

有关如何随机选择哪些字符设置为大写和小写的任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

Char.ToUpper(char c);Char.ToLower(char c);接受char参数,将其转换为大写或小写,并返回转换后的结果。它不会改变char本身(参见&#34;值和参考类型&#34; https://msdn.microsoft.com/en-us/library/4d43ts61(v=vs.90).aspx)。

您需要将其修改为以下内容:array[i] = Char.ToUpper(array[i]);

答案 1 :(得分:0)

以下是如何从句子中随机大写字母:

var someString = "This is the string they would enter";
var randomizer = new Random();
var final =
    someString.Select(x => randomizer.Next() % 2 == 0 ? 
    (char.IsUpper(x) ? x.ToString().ToLower().First() : x.ToString().ToUpper().First()) : x);
var randomUpperLower = new string(final.ToArray());
Console.WriteLine(randomUpperLower);

<== Try Me ==>