Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用Console.WriteLine()创建列格式文本_Vb.net_Format_Command Line Interface_Multiple Columns_Console.writeline - Fatal编程技术网

Vb.net 使用Console.WriteLine()创建列格式文本

Vb.net 使用Console.WriteLine()创建列格式文本,vb.net,format,command-line-interface,multiple-columns,console.writeline,Vb.net,Format,Command Line Interface,Multiple Columns,Console.writeline,我正在使用“console.WriteLine()”向控制台随机打印一张“卡” 我试图打印一行两部分。该行的第一部分显示您所绘制的卡的长名称。第二部分显示西装图标和号码: 是否有一种方法可以以更整洁/统一的方式显示线条的第二部分?大概是这样的: 出现问题的原因是,我的产品线的第一部分根据面值和西装的不同而改变尺寸。以下是我用来打印卡片的代码: Console.Write("Your card is a{0} " & textValue & " of " & suit,

我正在使用“console.WriteLine()”向控制台随机打印一张“卡”

我试图打印一行两部分。该行的第一部分显示您所绘制的卡的长名称。第二部分显示西装图标和号码:

是否有一种方法可以以更整洁/统一的方式显示线条的第二部分?大概是这样的:

出现问题的原因是,我的产品线的第一部分根据面值和西装的不同而改变尺寸。以下是我用来打印卡片的代码:

Console.Write("Your card is a{0} " & textValue & " of " & suit, IIf(textValue = "Ace", "n", ""))
Console.Write("     " & suitIcon & " " & textValue)
Console.WriteLine()
我还尝试了以下方法:

 Console.Write("Your card is a{0} " & textValue & " of " & suit, IIf(textValue = "Ace", "n", ""))
 Dim string2 As String = (suitIcon & " " & textValue)
 Dim padAmount As Integer = 50 - (suit.Length + textValue.Length)
 Console.Write(string2.PadLeft(padAmount, " "c))
 Console.WriteLine()
其中文本显示为:

我看不出您正在粘贴什么作为输出,但是像这样的东西呢

Module Module1

Dim lstCard As New List(Of String)
Dim lstSuit As New List(Of String)

Sub Main()

    lstCard.Add("Ace")
    lstCard.Add("King")
    lstCard.Add("Queen")
    lstCard.Add("10")
    lstCard.Add("9")

    lstSuit.Add("Spades")
    lstSuit.Add("Hearts")
    lstSuit.Add("Diamonds")
    lstSuit.Add("Clubs")

    For i As Int32 = 0 To lstSuit.Count - 1
        For j As Int32 = 0 To lstCard.Count - 1
            Console.WriteLine("Your card is {0} {1} of {2}.", IIf(lstCard(j) = "Ace", "an", "a").ToString.PadLeft(2), _
                              lstCard(j).PadLeft(5), lstSuit(i).PadLeft(8))
        Next
    Next

    Console.ReadLine()

End Sub

End Module
哪些产出:

Your card is an   Ace of   Spades.
Your card is  a  King of   Spades.
Your card is  a Queen of   Spades.
Your card is  a    10 of   Spades.
Your card is  a     9 of   Spades.
Your card is an   Ace of   Hearts.
Your card is  a  King of   Hearts.
Your card is  a Queen of   Hearts.
Your card is  a    10 of   Hearts.
Your card is  a     9 of   Hearts.
Your card is an   Ace of Diamonds.
Your card is  a  King of Diamonds.
Your card is  a Queen of Diamonds.
Your card is  a    10 of Diamonds.
Your card is  a     9 of Diamonds.
Your card is an   Ace of    Clubs.
Your card is  a  King of    Clubs.
Your card is  a Queen of    Clubs.
Your card is  a    10 of    Clubs.
Your card is  a     9 of    Clubs.

在@Capellan的帮助下,我找到了解决问题的方法。我还需要说明我的弦的第二部分的长度

我曾经使用以下代码来执行此操作:

        Console.Write("Your card is a{0} " & textValue & " of " & suit, IIf(textValue = "Ace", "n", ""))
    Dim string2 As String = (suitIcon & " " & textValue)
    Dim padAmount As Integer = (25 - (suit.Length + textValue.Length)) + suitIcon.Length + textValue.Length
    If textValue = "Ace" Then
        padAmount -= 1
    End If
    Console.Write(string2.PadLeft(padAmount, " "c))
    Console.WriteLine()
这可能仍然不是最好的方法,所以请随时提交答案。它确实产生了以下成果:

 Console.Write("Your card is a{0} " & textValue & " of " & suit, IIf(textValue = "Ace", "n", ""))
 Dim string2 As String = (suitIcon & " " & textValue)
 Dim padAmount As Integer = 50 - (suit.Length + textValue.Length)
 Console.Write(string2.PadLeft(padAmount, " "c))
 Console.WriteLine()

您可以使用格式化参数来控制输出的填充。-2表示左对齐并填充到2个字符,5表示右对齐并填充到5个字符:

Dim textValue = "Queen"
Dim suit = "Spades"
Dim article As String = IF(textValue = "Ace", "an", "a")

Console.WriteLine("Your card is {0,-2} {1,5} of {2}", article, textValue, suit)

textValue = "Ace"
suit = "Hearts"
article = IF(textValue = "Ace", "an", "a")

Console.WriteLine("Your card is {0,-2} {1,5} of {2}", article, textValue, suit)

textValue = "7"
suit = "Diamonds"
article = IF(textValue = "Ace", "an", "a")

Console.WriteLine("Your card is {0,-2} {1,5} of {2}", article, textValue, suit)
结果:

Your card is a  Queen of Spades
Your card is an   Ace of Hearts
Your card is a      7 of Diamonds

如果您将字符串的长度填充到X个字符,该怎么办?@Capellan感谢您的回复。我更新了这个问题,试图使用填充。它似乎不符合我的要求。