我的应用程序中有特定的要求,我有 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