我需要结合Stings" a" " B" " C" " d&#34 ;. 我已经尝试将它们放在一个列表中,然后通过它们解析一个foreach方法,但无济于事。
我还能做什么?
答案 0 :(得分:3)
将字符串放在数组中,您可以使用下面的函数打印所有排列,以便输出:abcd,abdc,adbc等。
递归排列(来自MSDN):
public static void Permute(string[] strings, int start, int finish)
{
if (start == finish)
{
for (int i = 0; i <= finish; ++i)
{
Console.Write(strings[i] + " " );
}
Console.WriteLine("");
}
else
{
for (int i = start; i <= finish; ++i)
{
string temp = strings[start];
strings[start] = strings[i];
strings[i] = temp;
Permute(strings, start+1, finish);
temp = strings[start];
strings[start] = strings[i];
strings[i] = temp;
}
}
} // Permute()
答案 1 :(得分:0)
你会列出一个名单吗?
List<String>myStrings = new List<String>();
myStrings.Add("a");
...
myStrings.Add("d");
你应该能够遍历那个
答案 2 :(得分:0)
我会给你逻辑。
创建一个List<String>
,然后继续添加每个字符串。
List<String> s = new List<String>();
s.add("a");
s.add("b");
s.add("c");
s.add("d");
添加完所有字符串后,在最小和最大索引之间生成一个随机数,如下所示:
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
然后,在使用此编号在List上的循环中打印每个字符串时,确保检查nex迭代不会重复相同的随机数。
答案 3 :(得分:0)
如果您有一定数量的字符串可以使用
var s = String.Format("{0}{1}{2}{3}", stringA, stringB, stringC, stringD);
否则for / foreach循环将成为前进之路,
var sb = new StringBuilder();
var strings = new List<string>();
// Add strings to list
for (var i = 0; i < strings.Count; i++)
{
sb.Append(strings[i]);
}
var s = sb.ToString();
我不会使用字符串+字符串+字符串样式连接,因为这是不好的做法,因为字符串在内存中的工作方式。
编辑:我还没有测试它在浏览器中编写的代码!如果您有任何问题,请告诉我。刚看到上面的评论,我发布的代码将始终以相同的顺序输出字符串,因此可能不是您想要的。
HTH
单次
答案 4 :(得分:0)
List<String>stringList = new List<String>();
stringList.Add("a");
stringList.Add("b");
...
...
foreach(string item in stringList)
{
string text=item;
}
答案 5 :(得分:0)
此示例执行所有组合(正确):
using System;
using System.Linq;
using System.Collections.Generic;
public static class Program
{
public static void Main(string[] args)
{
var list = new [] { "a", "b", "c", "d" };
foreach (var combi in Enumerable.Repeat(list, list.Length).CartesianProduct())
Console.WriteLine(string.Join(" ", combi));
}
static IEnumerable<IEnumerable<T>> CartesianProduct<T>(this IEnumerable<IEnumerable<T>> sequences)
{
IEnumerable<IEnumerable<T>> emptyProduct = new[] { Enumerable.Empty<T>() };
return sequences.Aggregate(
emptyProduct,
(accumulator, sequence) =>
from accseq in accumulator
from item in sequence
select accseq.Concat(new[] {item}));
}
}
输出:
a a a a
a a a b
a a a c
a a a d
a a b a
a a b b
a a b c
a a b d
a a c a
a a c b
....
d d b c
d d b d
d d c a
d d c b
d d c c
d d c d
d d d a
d d d b
d d d c
d d d d
如果您需要排列,可以从
中输入算法