Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c文本随机化器{variant1 | varian2 |…variantN}_C#_.net - Fatal编程技术网

C# c文本随机化器{variant1 | varian2 |…variantN}

C# c文本随机化器{variant1 | varian2 |…variantN},c#,.net,C#,.net,例如,我有这样的文本-我想买一辆{car | home | etc}。是否有随机文本库?也就是说,制作3个字符串 我想买一辆车 我想买一套房子 我想先买一本etc,我想你得自己编一本字典 使用一些随机化器后,例如此随机化器: 编辑 可能还有很多其他类型的解决方案,因此请澄清您的问题以获得更正确的答案 注意。您可以在数组中预定义字符串,然后使用类生成一个随机整数 注: 仅当选项位于字符串末尾时有效。 如果希望它解析每个实例,那么在while循环中设置它,检查索引是否为-1,并使用string.in

例如,我有这样的文本-我想买一辆{car | home | etc}。是否有随机文本库?也就是说,制作3个字符串

我想买一辆车 我想买一套房子
我想先买一本etc,我想你得自己编一本字典

使用一些随机化器后,例如此随机化器:

编辑

可能还有很多其他类型的解决方案,因此请澄清您的问题以获得更正确的答案


注意。

您可以在数组中预定义字符串,然后使用类生成一个随机整数

注:

仅当选项位于字符串末尾时有效。 如果希望它解析每个实例,那么在while循环中设置它,检查索引是否为-1,并使用string.insert

这是我为可转换文本创建的函数

        private string spinString(string s)
        {
            string  ret,
                    temp;

            string[] spinables;

            int index,
                i;

            Random a;


            a = new Random();
            ret = null;
            i = 0;

            while (true)
            {
                if (i == s.Length)
                    break;

                if (s[i] == '{')
                {
                    temp = s.Remove(0, i + 1);

                    index = temp.IndexOf('}');

                    if (index != -1)
                    {
                        temp = temp.Remove(index, temp.Length - index);

                        spinables = temp.Split('|');

                        temp = spinables[a.Next(spinables.Count())];

                        index = s.IndexOf('}', i);

                        if (index != -1)
                        {
                            s = s.Remove(i, index - i + 1);

                            s = s.Insert(i, temp);
                        }


                    }

                }

                try
                {
                    ret += s[i];
                }
                catch (Exception e)
                {
                    e.ToString();
                    break;
                }

                i++;
                Thread.Sleep(10);
            }


            return ret;
        }
试试这个-

String[] strings = {"car", "home", "boat"};
var output = "I want to buy a " + strings.OrderBy(en => System.Guid.NewGuid()).First();

我认为这是Regex的工作。替换:

private void button1_Click(object sender, EventArgs e)
{
    string text = Regex.Replace(textBox1.Text, "{(.*?)}", PickRandomWord);
    ...
}

private Random random = new Random();
private string PickRandomWord(Match match)
{
    string[] words = match.Groups[1].Value.Split('|');
    return words[random.Next(words.Length)];
}

这将随机选择一个文本。

您能澄清一下您的要求吗?您需要输出三个字符串,还是需要随机生成三个字符串中的一个?您不能将{text | between | delimiter}之间的文本拆分为一个数组吗。一旦你有了一个数组,你就可以使用c语言中的随机数发生器为你选择一个随机数了?我几乎想说的是,为这个句子定义一个数据结构,然后你就可以轻松地处理不同的场景。例如,我想买一辆{汽车|房子|等}但我想{节省|储蓄}{钱|餐车|美钞}。否则,为许多独特的场景尝试和操作字符串可能会成为一个主要的难题。行choice=rand.Next0,choices.Count应该是choice=rand.Next0,choices.Length;可以简化为choice=rand.Nextchoices.Length;那也可以做同样的事情。@pstrjds:谢谢。我不记得标准数组是使用计数还是长度。我似乎总是选错一个!为了可读性,我离开了起始边界,因为数组是基于零的.np,我总是这样做,混淆的是LINQ添加了一个计数方法,所以我想最好澄清一下:假设数组包含5个项,那么data.Length==5。数据[rand.Nextdata.Length]将在darn返回时导致IndexOutOfBoundsException异常。5将在0和N之间返回-1@sll-np,你让我再次检查文档,这是一件好事,我不想给出一个从数组末尾运行的损坏样本。这就是我要找的。谢谢
        private string spinString(string s)
        {
            string  ret,
                    temp;

            string[] spinables;

            int index,
                i;

            Random a;


            a = new Random();
            ret = null;
            i = 0;

            while (true)
            {
                if (i == s.Length)
                    break;

                if (s[i] == '{')
                {
                    temp = s.Remove(0, i + 1);

                    index = temp.IndexOf('}');

                    if (index != -1)
                    {
                        temp = temp.Remove(index, temp.Length - index);

                        spinables = temp.Split('|');

                        temp = spinables[a.Next(spinables.Count())];

                        index = s.IndexOf('}', i);

                        if (index != -1)
                        {
                            s = s.Remove(i, index - i + 1);

                            s = s.Insert(i, temp);
                        }


                    }

                }

                try
                {
                    ret += s[i];
                }
                catch (Exception e)
                {
                    e.ToString();
                    break;
                }

                i++;
                Thread.Sleep(10);
            }


            return ret;
        }
String[] strings = {"car", "home", "boat"};
var output = "I want to buy a " + strings.OrderBy(en => System.Guid.NewGuid()).First();
private void button1_Click(object sender, EventArgs e)
{
    string text = Regex.Replace(textBox1.Text, "{(.*?)}", PickRandomWord);
    ...
}

private Random random = new Random();
private string PickRandomWord(Match match)
{
    string[] words = match.Groups[1].Value.Split('|');
    return words[random.Next(words.Length)];
}