将字符串格式化为较小的部分,并在第二个字符串之前添加空格



我的应用程序中有特定的要求,我有 2 个字符串和每行 30 个字符的可用空间。

第一个字符串通常是 20+ 个字符,如果超过 30 个字符,我需要插入换行符(打印新行)并添加空格,以便第二个字符串位于右侧。

如果我有这两个字符串:

Dim stringNumberOne as String = "string1string1string1string1string1string1string1string1string1string1 "
Dim stringNumberTwo as String = "1,00"

最终结果应该是这样的:

string1string1string1string1string
1string1string1string1string1strin
g1                            1,00  

因为这应该写在POS打印机上,所以我需要为每个新行添加mstrStringToPrint &= ControlChars.NewLine,所以代码应该如下所示:

mstrStringToPrint &= "string1string1string1string1string"
mstrStringToPrint &= ControlChars.NewLine
mstrStringToPrint &= "string1string1string1string1string"
mstrStringToPrint &= ControlChars.NewLine
mstrStringToPrint &= "g1" & emptySpaces & "1,00"

我将如何在 vb.net 实现这一目标?

我可能会做这样的事情

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim stringNumberOne As String = "string1string1string1string1string1string1string1string1string1string1 "
Dim stringNumberTwo As String = "1,00"
Dim NewString As String = String.Empty
Dim i As Integer = 1
For Each c As Char In stringNumberOne
If i = 30 Then
NewString &= c & Environment.NewLine
i = 0
Else
NewString &= c
i += 1
End If
Next
NewString = NewString & Environment.NewLine & stringNumberTwo.PadLeft(30, " ")
End Sub

我不太确定你想用最后一行做什么,这段代码将在用空格填充 30 个字符之前添加一个换行符。

试试这个。给定规格:

Dim maxLengh As Integer = 30
Dim line1 = "string1string1string1string1string1string1string1string1string1string1"
Dim line2 = "1,00"
  • 一个字符串分成MaxLength部分。
  • 如果零件长度为= MaxLength,则添加换行符 + 回车符。
  • 如果部分长度为< MaxLength,则添加带有空格的第二行填充以填充字符串以填充MaxLength,如果它可以包含第二行。
  • 如果第一个字符串可以精确切片MaxLength或者最后一个切片不能包含已经存在的内容 + 第二行,请添加一个新字符串,左边填充 (MaxLength - [second line].Length)

Dim lines As List(Of String) = New List(Of String)()
Dim pos As Integer = 0
While pos < line1.Length
Dim part = If(pos + maxLength < line1.Length, maxLength, line1.Length - pos)
lines.Add(line1.Substring(pos, part) & If(part = maxLength, ControlChars.NewLine, ""))
pos += maxLength
End While
If (lines.Last().Length + line2.Length) < maxLength Then
lines(lines.Count - 1) = lines.Last() & line2.PadLeft(maxLength - lines.Last().Length, " "c)
Else
lines.Add(line2.PadLeft(maxLength - line2.Length, " "c))
End If

最新更新