【问题标题】:Converting random letters within a string to Upper/Lower Case将字符串中的随机字母转换为大写/小写
【发布时间】:2017-05-14 21:51:57
【问题描述】:

我有一个机器人来解决我的不和谐问题,我正在添加一个命令来发布你最近在 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);

        });

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

【问题讨论】:

  • Char.ToLower 返回新值。你必须收集那些。使用 stringbuilder 或预分配的 char 数组
  • array[i] = Char.ToUpper(array[i]);
  • 请决定:您要设置每个字符还是一些随机字符?
  • 啊,我明白了,现在完美了,谢谢!

标签: c# string char


【解决方案1】:

这里是如何从一个句子中随机大写字母:

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 ==>

【讨论】:

  • 如果用户用大写字母输入某些内容,这实际上是行不通的。
  • @juharr 感谢您的提醒。编辑了我的答案。
【解决方案2】:

Char.ToUpper(char c);Char.ToLower(char c); 接受 char 参数,将其转换为大写或小写,并返回转换后的结果。它不会更改字符本身(请参阅“值和引用类型”https://msdn.microsoft.com/en-us/library/4d43ts61(v=vs.90).aspx)。

你需要把它修改成这样:array[i] = Char.ToUpper(array[i]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多