我有一段代码,它从数组中输出一些值,并在值a[i]
下面的新行中加上-
Console.Write(a[i] + "\n-");
看起来是这样的。
a
-
现在我有更多的Console.Write(a[i+1] + "\n-");
代码,输出结果如下:
a
-b
-c
-d
-
我知道为什么会这样,但如何在每个新行\n
后返回一行?这样我就可以得到这个结果:
abcd
----
我有一段代码,它从数组中输出一些值,并在值a[i]
下面的新行中加上-
Console.Write(a[i] + "\n-");
a
-
现在我有更多的Console.Write(a[i+1] + "\n-");
代码,输出结果如下:
a
-b
-c
-d
-
我知道为什么会这样,但如何在每个新行\n
后返回一行?这样我就可以得到这个结果:
abcd
----
首先需要输出数值,然后再输出破折号:
Console.WriteLine(string.Join("", a)); // make a string of all values and write a line end
Console.WriteLine(string.Join("", a.Select(v => "-"))); // write the dashes
[Ideone]
使用Concat
的另一种方法:
char[] a = {'a','b','c','d'};
Console.WriteLine(string.Concat(a));
Console.WriteLine(new string('-',a.Length));
你不需要“向上移动一行”。你需要先输出第一行,然后再输出第二行。因此,你需要先输出整个 a
数组,然后再输出一个与该数组长度相同的横线。可能像这样:
Console.WriteLine(string.Join("", a));
Console.WriteLine(string.Join("", a.Select(_ => "-")));
a
数组的所有元素连接成一个字符串,第二行使用LINQ中的技巧来“查询”a
数组,但返回连字符而不是该数组中的任何内容,然后以相同的方式输出。var baseLine = Console.CursorTop;
char[] a = {'a', 'b', 'c', 'd'};
char[] b = {'A', 'B', 'C', 'D'};
string[] conditions = {"a", "a", "both", "b"}; // Which arrays to show
for (int i = 0; i < a.Length; i++)
{
Console.SetCursorPosition(i, baseLine);
Console.Write(conditions[i] != "b" ? a[i] : '-');
Console.SetCursorPosition(i, baseLine + 1);
Console.Write(conditions[i] != "a" ? b[i] : '-');
}
baseLine
是必需的,因为您不知道从哪一行开始。
输出:
abc-
--CD
Linq 一行代码:
Console.Write(String.Concat(a) + "\n" + new String('-', a.Length));