从动态字符串分割固定长度的字符串Vb.net
问题描述:
我正在VB 2010中开发一个应用程序,其中我正在通过串行端口向PLC发送命令并从PLC接收字符串中的数据。从PLC收到从动态字符串分割固定长度的字符串Vb.net
我已删除了字符串的不必要的内容,并获得最终的字符串中ReturnStr如下:
Dim WriteStr, ChkWrite As String
Dim ReadStr, ReturnStr, ChkRecd, ChkCalc As String
Dim ChkComp As Integer
WriteStr = String.Concat("01", cmd, Add, Points)
ChkWrite = Check(WriteStr)
Try
sp.WriteLine(":" & WriteStr & ChkWrite & vbCr)
ReadStr = sp.ReadLine()
Catch ReadErr As Exception
Return "0"
End Try
ChkRecd = ReadStr.Substring((((CInt("&H" & Points)) * 4) + 7), 2)
ChkCalc = Check(ReadStr.Substring(1, ((Len(ReadStr) - 4))))
ChkComp = String.Compare(ChkRecd, ChkCalc)
If ChkComp <> 0 Then
Return "0"
End If
ReturnStr = (ReadStr.Substring(7)).Remove(CInt("&H" & (Points)) * 4)
Return ReturnStr
ReturnStr返回字符串像006600D000C9006D0013B003A00014C00349,我想分成一组每个4个字符。
我的查询是ReturnStr可能包含无限长度的数据(以4的倍数),所以我怎么去从每个子这样的字符串,显示值分割字符串标签的形式是这样的:
lblPt1.Text = CInt("&h" & (ReturnStr.Substring(0, 4)))
lblPt2.Text = CInt("&h" & (ReturnStr.Substring(4, 4)))
lblPt3.Text = CInt("&h" & (ReturnStr.Substring(8, 4)))
lblPt4.Text = CInt("&h" & (ReturnStr.Substring(12, 4)))
lblPt5.Text = CInt("&h" & (ReturnStr.Substring(16, 4)))
lblPt6.Text = CInt("&h" & (ReturnStr.Substring(20, 4)))
lblPt7.Text = CInt("&h" & (ReturnStr.Substring(24, 4)))
lblPt8.Text = CInt("&h" & (ReturnStr.Substring(28, 4)))
答
Dim s = "006600D000C9006D0013B003A00014C00349"
Dim a = From i In Enumerable.Range(0, s.Length \ 4) Select Mid(s, i * 4, 4)
更新
有关更新问题
Dim labels = { lblPt1, lblPt2, lblPt3, lblPt4, lblPt5, lblPt6, lblPt7, lblPt8 }
' or query them from Me.Controls.OfType(Of Label) or just use ListBox or better conrol
ReturnStr = ReturnStr.PadRight(labels.Length * 4)
For i = 0 To labels.Length - 1
labels(i).Text = Val("&h" & Mid(ReturnStr, i * 4, 4))
Next
有[很少](http://*.com/questions/8774392/how-to-split-a-string-by-x-amount-of-characters)[例子](http:///*.com/questions/7376987/how-to-split-a-string-into-a-fixed-length-string-array)[in](http://*.com/questions/30385540/how-do -i-split-a-string-every-7-charecter-in-vb?noredirect = 1&lq = 1)该网站。 –