Vb.net 奇怪的字符串操作问题

Vb.net 奇怪的字符串操作问题,vb.net,Vb.net,我试图制作一系列长度完全相同的字符串。我正在尝试执行以下步骤: 如果字符串超过25个字符,请修剪多余的字符 如果小于25,则用空格填充 确保无论哪种方式,字符串都是25个字符长 这是我的代码(或者至少是相关的代码) 这在我脑子里应该是有用的。但是如果我用6个字符的输入运行代码3次,然后是7次,然后是8次,我得到的输出是: 很明显,这并没有缩短任何东西(价格只是简单地钉在绳子的末端,以显示绳子的末端)。有什么想法吗?一般来说,您的VB6方法也应该有效,但我会使用.NET: Dim curOrde

我试图制作一系列长度完全相同的字符串。我正在尝试执行以下步骤:

  • 如果字符串超过25个字符,请修剪多余的字符
  • 如果小于25,则用空格填充
  • 确保无论哪种方式,字符串都是25个字符长
  • 这是我的代码(或者至少是相关的代码)

    这在我脑子里应该是有用的。但是如果我用6个字符的输入运行代码3次,然后是7次,然后是8次,我得到的输出是:


    很明显,这并没有缩短任何东西(价格只是简单地钉在绳子的末端,以显示绳子的末端)。有什么想法吗?

    一般来说,您的VB6方法也应该有效,但我会使用.NET:

    Dim curOrder = My.Settings.currOrder1
    If curOrder.Length > 25 Then
        My.Settings.currOrder1 = curOrder.Substring(0, 25)
    ElseIf curOrder.Length < 25 Then
        My.Settings.currOrder1 = curOrder.PadRight(25, " "c)
    End If
    Debug.Assert( My.Settings.currOrder1.Length = 25 )
    
    Dim curOrder=My.Settings.currorder 1
    如果curOrder.Length>25,则
    My.Settings.currOrder1=curOrder.Substring(0,25)
    ElseIf curOrder.那么长度<25
    My.Settings.currOrder1=curOrder.PadRight(25,,“c)
    如果结束
    Assert(My.Settings.currOrder1.Length=25)
    
    试试这个:

    Dim str As String = "Abc"
    If str.Length < 25 Then
      str = str.PadRight(25 - str.Length, " "C)
    Else
      str = str.Substring(0, 25)
    End If
    
    Dim str As String=“Abc”
    如果str.Length<25,则
    str=str.PadRight(25-str.Length,C)
    其他的
    str=str.Substring(0,25)
    如果结束
    
    尝试使用
    My.Settings.currOrder1=My.Settings.currOrder1.PadRight(25)
    而不是添加然后修剪?稍微整洁一点。但不管怎样,我认为问题在于空间所占的空间比实际角色所占的空间要小
    PadRight
    更简单,您应该尝试使用单间距字体,使每个字符具有相同的宽度。非常感谢,这是一个简单且易于实现的答案。工作得很好。我需要添加的唯一一件事是,结果字符串尽管长度相同,但由于字母表中不同字母的大小不同,看起来不一样。在标记价格之前,通过在字符串后面添加制表符来解决这个问题。由于所有字符串现在都有25个字符长,因此选项卡总是出现在同一位置。再次感谢您的帮助通常情况下,我不会选择以“试试这个”开头的答案,但在这里我破例了。:-)
    Dim str As String = "Abc"
    If str.Length < 25 Then
      str = str.PadRight(25 - str.Length, " "C)
    Else
      str = str.Substring(0, 25)
    End If