使用string.Concat的元组输出

时间:2014-01-04 03:22:15

标签: c# dictionary tuples

我有这本词典:

Dictionary<char, Tuple<char, char>> EngtoJap = new Dictionary<char, Tuple<char, char>>()
{
//My dictionary
}

我试图用这个得到输出:

string output = string.Concat(array.Select(c => EngtoJap.ContainsKey(c) ? EngtoJap[c] : c));

我知道输出结束时出现了问题,但我不知道我需要修复它才能获得元组。

如果我不清楚,谢谢,抱歉。

修改 对不起,我会更具体。我的目标是使用英语句子并将每个字符更改为字典中指定的日语字符。

我想要的结果是随机获得Item1或Item2来替换句子中的英文字符,然后替换日语段落第n个位置的每个更改字符。

之后,我想使用numericupdown获取字符的第n个位置,并将它们更改回英文字符以形成句子。我已经有了另一本字典。

我希望它不会太混乱......

1 个答案:

答案 0 :(得分:1)

你想这样做吗?

string output = string.Concat(array.Select(c => EngtoJap.ContainsKey(c) ? EngtoJap[c].Item1.ToString() + EngtoJap[c].Item2.ToString() : c.ToString()));

您已经拥有EngtoJap[c]的元组,因此您可以使用EngtoJap[c].Item1获取第一个字符,使用EngtoJap[c].Item2获取第二个字符。如果你ToString()那么你可以连接两个字符,而Select知道你正在返回一个字符串集合,那些将由Concat连接起来。

编辑在您的编辑中,您说您正在尝试随机获取Item1或Item2。这会有用吗?

System.Random random = new Random(DateTime.Now.Millisecond);
string output = string.Concat(array.Select(c => EngtoJap.ContainsKey(c) ? ( random.Next(2) == 1 ? EngtoJap[c].Item1 : EngtoJap[c].Item2 ) : c));