[英]Parsing data from textbox into multiple textboxes - VB.NET
我希望能夠將制表符分隔的數據(如下所示)粘貼到多行文本框中。
資料 :
Fat 119.3g 62.1%
Saturated Fat 26.4g
Cholesterol 442.5mg
Sodium 3,824.8mg
Carbohydrates 80.1g 18.5%
Fiber 12.1g
Sugars 26.6g
Protein 83.7g 19.4%
注意 :每行是:
當我單擊一個按鈕時,我希望發生以下情況:
fatInput.text = "119.3"
satfatInput.text = "26.4"
cholesteralInput.text = "442.5"
sodiumInput.text = "3824.8"
carbInput.text = "80.1"
fiberInput.text = "12.1"
sugarInput.text = "26.6"
proteinInput.text = "83.7"
因此,總而言之,它會將這些數字從我粘貼到其中的文本框中拉出,然后將其輸入到單獨的文本框中。 逗號“ g”和“ mg”不應包括在內。 這三個百分比無關緊要,可以忽略不計。 營養素名稱,順序和標簽不會更改。
這有可能嗎?
謝謝您的幫助!!!
免責聲明 :不是程序員,只要具備一些有趣的程序的基本知識和思想,即可幫助我跟蹤自己的飲食。 我已經完成了該程序,但是決定通過以下內容對其進行增強,因此我不必手動輸入這些數字。 如果這太復雜了,我就不需要答案了,只需要一個方向就可以了。 我不知道從哪里開始!
TextBox具有Lines屬性,使您可以訪問輸入的文本行。
然后,您可以使用String.Split方法進一步分割行
Dim parts() As String = line.Split(ControlChars.Tab)
VB具有方便的Val函數,該函數獲取字符串中包含的數字。 但它不能處理逗號,因此在獲取數字之前,請使用“ 替換”功能將其刪除
Dim d As Double = Val(parts(1).Replace(",", ""))
然后,您可以使用“ 向右”功能通過查看最右邊的兩個字符來獲取單位,並查看其是否為“ mg”,如果沒有,請檢查最右邊的字符以查看其是否為“ g”。
感謝Olivier使我的大腦以正確的順序思考:
可能令人討厭,但這是我使用的代碼:
Dim msgStr As String
Dim newStr As String = ""
Dim tempArray() As String
tempArray = pasteInput.Lines
msgStr = (tempArray(0))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
fatInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(1))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
satfatInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(2))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
cholInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(3))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
sodiumInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(4))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
carbInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(5))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
fiberInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(6))
msgStr = Replace(msgStr, "Sugars", "")
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
sugarInput.Text = newStr
newStr = ""
Exit For
End If
Next
msgStr = (tempArray(7))
For Each value As Char In msgStr
If value >= "0" And value <= "9" Or value = "." Then
newStr &= value
ElseIf value = "g" Or value = "mg" Then
proteinInput.Text = newStr
newStr = ""
Exit For
End If
Next
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.