У нас есть этот метод VB. NET.
Цель: строка с несколькими строками символов должна вписываться в столбец печатного отчета. Строка должна быть предварительно обработана, чтобы иметь разрывы строки до или при заданном количестве символов, разрыв строки не может быть частью пути, хотя слово или число. Невозможно удалить символы, кроме пробелов.
Дополнительные сведения:
- "," должно быть в конце строки, не помещаться в начало новой строки
Не могу понять как решить: символ на разрыве строки удаляется, и его не должно быть, если только это не пробел.
<Extension()>
Public Function SplitOn(ByVal initial As String, ByVal MaxCharacters As Integer) As List(Of String)
Dim lines As List(Of String) = New List(Of String)()
If String.IsNullOrEmpty(initial) = False Then
Dim targetGroup As String = "Line"
Dim pattern As String = String.Format("(?<{0}>.{{1,{1}}})(?:\W|$)", targetGroup, MaxCharacters)
lines = Regex.Matches(initial, pattern, RegexOptions.Multiline Or RegexOptions.CultureInvariant).OfType(Of Match)().[Select](Function(mt) mt.Groups(targetGroup).Value).ToList()
End If
For i As Integer = 0 To lines.Count - 1
lines(i) = lines(i).TrimEnd(New Char() {CChar(vbCr), CChar(vbLf)})
Next
Return lines
End Function
Тестовые случаи
initial =
"RW / 40 мм, 6/50 мм, 4,2
N = 6"
Случай 1:
MaxCharacters = 10
Текущий результат:
RW / 40 мм, 6
50 мм, 4,2
N = 6
Требуемый результат:
RW / 40 мм, 6 /
50 мм, 4,2
N = 6
Проблема: после / 6 снимается, ее следует сохранить
Случай 2 MaxCharacters = 9
Текущий результат:
RW / 40mm
6 / 50mm , 4
2
N = 6
Требуемый результат:
RW / 40 мм,
6/50 мм, 4,
2
N = 6
Проблема: нужно сохранить, после 40 мм и после 4