例如我有这样的文字 - “我想买{car | home | etc}”。是否有任何lib随机化文本?即制作3个字符串
我想买一辆车 我想买个房子 我想买一个等等答案 0 :(得分:7)
您可以在数组中预定义字符串,然后使用Random类生成随机整数。
var string[] data = new string[] {"car", "home", "etc"};
var rand = new Random();
var text = "I want to buy a " + data[rand.Next(data.Length)];
答案 1 :(得分:1)
首先,我认为你必须创建自己的单词词典
使用一些随机数发生器后,例如这个:Random Sentences and Paragraphs
修改强>
可能有很多其他类型的解决方案,所以请澄清您的问题以获得更正确的答案。
问候。
答案 2 :(得分:1)
我认为这是Regex.Replace的工作:
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)];
}
这将选择一个随机文本。
答案 3 :(得分:0)
public String CalculateRandomString(String input)
{
String s = input.Substring(0, input.IndexOf('{'));
String choiceString = input.Substring(input.IndexOf('{'), input.IndexOf('}'));
String[] choices = choiceString.Split('|');
Random rand = new Random();
int choice = rand.Next(0, choices.Length);
return s + choices[choice];
}
注意:
答案 4 :(得分:0)
//demonstration
index = string.indexOf('{');
if(index != -1)
{
string.remove(0, index);
endIndex = string.indexOf('}', index);
if(endIndex != -1)
{
list = string.remove(endIndex, string.length - endIndex).split('|').toList();
return list[rand.next(list.count)];
}
}
如果你想要解析每个实例,那么在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;
}
答案 5 :(得分:0)
试试这个 -
String[] strings = {"car", "home", "boat"};
var output = "I want to buy a " + strings.OrderBy(en => System.Guid.NewGuid()).First();