#vb.net #arrays #textbox #listbox
#vb.net #массивы #текстовое поле #listbox
Вопрос:
Я все еще студент без особого опыта использования vb.net и у меня возникли некоторые проблемы с разделением строки внутри массива на 2 значения. Например, в моем текстовом поле у меня есть несколько строк измерений длиной x шириной: 20×14, 10×8, 16×13. Каждое измерение выполняется в отдельной строке. Я пытаюсь разделить все значения ширины, которые больше 12, на 2 отдельных измерения, поэтому в последнем примере у меня было бы 5 измерений (LxW): 20×12, 20×2, 10×8, 16×12, 16×1, затем я хотел бы добавить эти измерения в новое текстовое поле с каждым измерением в отдельной строке.
Вот код, который у меня есть на данный момент. Опять же, я очень новичок в программировании, и это первый серьезный проект для меня со времен «Hello World», так что то, что у меня есть, может быть, не совсем так. Заранее спасибо.
Dim room As String = RoomsTextBox.Text
If room.EndsWith(vbCrLf) Then room = room.Substring(0, room.Length - vbCrLf.Length)
Dim roomarray() As String = room.Split(vbCrLf)
Dim Cuts(roomarray.Length - 1, 0) As String
RoomsTextBox.Select(0, 0)
Dim CutLength As Integer
Dim CutWidth As Integer
Dim i As Integer
Dim j As Integer
CutsTextBox.Select()
Cuts(i, j) = (Val(roomarray(i).Split("x")(0))) amp; Val(roomarray(j).Split("x")(1))
For i = 0 To Cuts.GetUpperBound(0)
For j = 0 To Cuts.GetUpperBound(1)
Cuts(i, j) = 0
Next
If Val(roomarray(i)) > 12 Then
CutWidth = Val(roomarray(i)) - 12
CutLength = Val(roomarray(j))
Else
CutWidth = Val(roomarray(i))
CutLength = Val(roomarray(j))
End If
Dim inserttext = CutsTextBox.Text
Dim insertposition As Integer = CutsTextBox.SelectionStart
CutsTextBox.Text = CutsTextBox.Text.Insert(0, CutLength.ToString amp; "x" amp; _
CutWidth.ToString)
CutsTextBox.SelectionStart = insertposition inserttext.Length
Next i
Я даже попробовал это с вставкой измерений в ListBox. Вот код для этого:
Dim room As String = RoomsTextBox.Text
Dim roomarray() As String = room.Split(vbCrLf)
Dim Cuts(roomarray.Length - 1, 0) As String
Dim CutLength As Integer
Dim CutWidth As Integer
Dim i As Integer
Dim j As Integer
CutsTextBox.Select()
Cuts(i, j) = (Val(roomarray(i).Split("x")(0))) amp; Val(roomarray(j).Split("x")(1))
For i = 0 To Cuts.GetUpperBound(0)
For j = 0 To Cuts.GetUpperBound(1)
Cuts(i, j) = 0
Next
If Val(roomarray(i)) > 12 Then
CutWidth = Val(roomarray(i)) - 12
CutLength = Val(roomarray(j))
Else
CutWidth = Val(roomarray(i))
CutLength = Val(roomarray(j))
End If
ListBox1.Items.Add(CutLength.ToString amp; "x" amp; CutWidth.ToString)
Next i
Комментарии:
1. Итак, у вас есть ваши 5 новых измерений, и вы просто застряли на добавлении их в текстовое поле в их отдельной строке, или вы застряли на получении измерений?
Ответ №1:
Попробуйте это.
Dim dimensions As String() = txtInput.Text.Split(vbCrLf)
Dim final As New List(Of String)
For Each item In dimensions
Dim lw As String() = item.Split("x")
Dim length As String = lw(0)
Dim width As Integer = CInt(lw(1))
If width > 12 Then
Dim new1 As String
Dim new2 As String
new1 = length amp; "x" amp; (width - 12).ToString
new2 = length amp; "x12"
final.Add(new1)
final.Add(new2)
Else
final.Add(item)
End If
Next
For Each item In final
txtOutPut.Text = item amp; vbCrLf
Next
Комментарии:
1. Спасибо, Джек, это сделало именно то, что я хотел. Я действительно ценю помощь.
2. Извините, только что отметил это как принятый ответ, я новичок на этом сайте и не был уверен, что это значит. Еще раз спасибо