【问题标题】:Give Specific Space on string在字符串上给出特定的空间
【发布时间】:2013-05-08 10:20:00
【问题描述】:

我的 VB.net 上有来自存储过程的字符串变量,将其放在变量上后,我想让值具有指定的空间。

规则是这样的

图片上的数字表示空格,

我已经做了一些这样的尝试和错误:

                Dim words As String() = receiptText.Split(" ")
                Dim word As String
                Dim XMLBuild As New StringBuilder
                XMLBuild.Append(Space(9))
                For Each word In words

                    XMLBuild.Append(word)
                    XMLBuild.Append(Space(9))

                Next

但结果是

{         PLEASE         KEEP         THIS         RECEIPT         AS         VALID         PROOF         OF         PAYMENT         }

不喜欢我应该做的规则。有没有我要使用的字符串函数?

【问题讨论】:

  • PadLeftPadRight
  • `pad离开了?到目前为止,我知道左边的垫子是用来给或插入东西的……可以在我的箱子上使用它吗?
  • 你用谷歌搜索过这个词吗?搜索 C# PadLeft 并查看它的全部内容。这就是你需要的一切。
  • 好吧,对不起,我已经在使用 em。

标签: c# asp.net vb.net string


【解决方案1】:

您将输入字符串拆分为每个空格,我不确定这是一个好方法,因为人名、城市地址和其他字段在单词之间有空格,但是如果您想在固定空格中格式化您的输入那么我会给你一个通用的方法,至少对于你上面例子的第一行

' This is how the first line appears in the string array after the space splitting'
Dim parts = new string() {"BL", "TH", ":", "NO",  "REF.", ":", "1234567890", "R.WAHYUDIYOINO,IR"}

' This array contains the spaces reserved for each word in the string array above'
Dim spaces = new integer () {3,9,2,17,10,2,17,2,28 }

' Now loop on the strings and format them as indicated by the spaces'
' Attention, the value for space include the string itself'
Dim sb = new StringBuilder()
Dim x As INteger = 0
For each s in parts
    sb.Append(s.PadRight(spaces(x)))
    x += 1
Next
sb.AppendLine()
' To check the result (it is useful only if the output window has fixed space font)'
sb.Append("12345678901234567890123456789012345678901234567890123456789012345678901234567890")
Console.WriteLine(sb.ToString())

【讨论】:

  • 太棒了,这就是我要找的。谢谢你:)
【解决方案2】:

您可以使用String.Join 来完成您的要求,

String.Join(Space(9), receiptText.Split(Space(1)))

【讨论】:

    【解决方案3】:

    如果我理解得很好,您需要将您的值连接起来并具有特定的长度。这可以通过使用format 函数和PadLeft/PadRight 轻松完成。

    首先,您将所有内容放入格式字符串中。但是每个变量都会传递给一个填充函数。

    String strFinalResult = String.Format("{0}{1}{2}", str1.PadRight(9), str2.PadRight(6), str3.PadRight(7));
    

    PadRight 函数中的数字是字符串的总长度。所以如果你的变量是“abc”并且你调用str.PadRight(9),你会得到右边有6个空格的“abc”。

    希望对你有帮助!

    编辑 我的答案是在 C# 中,但由于它是 String 对象,我很确定它在 VB.NET 中可用

    编辑 2 如果你希望你的字符串在开头和结尾都有填充,你可以使用 PadRight 和 PadLeft。

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      相关资源
      最近更新 更多