簡體   English   中英

將數據從文本框解析為多個文本框-VB.NET

[英]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使我的大腦以正確的順序思考:

  1. 使用Lines屬性將其放入數組
  2. 從數組中抓一行
  3. 僅從行中抓取數字(我使用了if / then語句,因為Val一直返回“ 0”)
  4. 切成“ g”或“ mg”(這很容易,因為我已經有了一個if / then語句)
  5. 對8行中的每行重復

可能令人討厭,但這是我使用的代碼:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM