2010-10-19 3 views
1

Я просто хочу выбрать случайное значение в строке, разделенной на '|'. Я не могу найти хороший пример, у кого есть идея?C# сбор случайной строки

string[] mystrings = ("apple|orange|mayo|fruit|dog"): 

string blah = "here i am "+resultsofrandom+" result chosen from mystring was " resultofrandom 

очевидно строка мля это просто пример, я просто хочу, случайную выбранную строку из mystrings обратно в новую строку ...

+0

Так много таких же (справа) ответов. У меня есть собака? Я знаю, что это не случайно, но черт возьми, собаки рок. –

ответ

15
string[] mystrings = "apple|orange|mayo|fruit|dog".Split('|'); 
Random rnd = new Random(); 
string blah1 = mystrings[rnd.Next(mystrings.Length)]; 
string blah2 = mystrings[rnd.Next(mystrings.Length)]; 
string sentence = "here i am " + blah1 + " result chosen from mystring was " + blah2 
+1

Длина минус 1 ??? 'string blah = mystrings [rnd.Next (0, mystrings.Length - 1];' – Brad

+8

Нет, Random.Next не имеет верхней границы. http://msdn.microsoft.com/en-us/library/2dx6wyd4 .aspx –

+0

Как я произвольно выбираю новое значение для Random каждый раз, например, если я хочу сделать blah = int choice = new Random(). Далее (randommakework.Length), а затем строка blah2 = mystrings [rnd.Next (mystrings.Length)]; (но это новый случайный случай. – 2010-10-19 17:12:58

1
var mystrings = ("apple|orange|mayo|fruit|dog").Split('|'); 
string blah = "here i am " + mystrings[new Random().Next(0, mystrings.Length)] + " result chosen.."; 

Я думаю, что он будет работать, как ожидалось

0

Используйте String.Split(), чтобы разделить строку с разделителями и сохранить каждое отдельное значение в массиве строк. Затем произвольно выберите индекс в этот массив и отобразите соответствующую строку.

5

Вы можете сделать это довольно просто путем разделения строки:

string[] mystrings = "apple|orange|mayo|fruit|dog".Split('|'); 

затем использовать в Random класс, чтобы выбрать одну из этих строк:

int choice = new Random().Next(mystrings.Length); 

Теперь вы можете положить его вместе:

string blah = "Your selection is: " + mystrings[choice]; 
2
Random rnd= new Random(); 
     int baseZeroArrayLen = 0; 
     string[] mystrings = ("apple|orange|mayo|fruit|dog").Split('|'); 
     baseZeroArrayLen = mystrings.Length - 1; 
     int randomNumber = rnd.Next(baseZeroArrayLen); 
     string rndString = mystrings[randomNumber]; 
1

Это должно сделать это:

string[] mystrings = ("apple|orange|mayo|fruit|dog").Split('|'); 
     Random randomInt = new Random(); 
      string blah = mystrings[randomInt.Next(mystrings.Length)]; 
0

Полностью ненужная альтернатива LINQ. Хотя string.Format может быть приятным здесь.

string[] mystrings = "apple|orange|mayo|fruit|dog".Split('|'); 

string blah = string.Format("here i am {0} result chosen from mystring was {0}", 
       mystrings.Skip(new Random().Next(mystrings.Length)).First()); 
+1

Вы можете сделать 'mystrings.OrderBy (s => new Random(). Next()). First(); 'также. –

Смежные вопросы