0

こんにちは、私はこのような文字列を持っています

"81.213.224.141","81.213.224.141","UAE","United Emirates","D3","Dubai","WildWadi","","32.100000","3.200100","Telecom","Eutelsat - SanComm". 私が現在取り組んでいるのは、カンマを避けて引用符の間のデータのみを取得し、それらを別の文字列に格納することです。したがって、文字列 1 には最初の IP、文字列 2 には 2 番目の IP、文字列 3 には国コードなどがあります。

"Eutelsat - SanComm"2つに分割して2つの文字列に格納したいからです。したがって、最初の文字列は にEutelsatなり、2 番目の文字列は になりますSanComm

これまでのところ、文字列を分割することができましたが、引用符の間でデータを取得しているだけでなく、完全に表示されていません。たとえばTelecom、情報全体からのみ表示されています。

コード:

str_Info = TextBox1.Text.Split(" ") //str_Info is a string having the TextBox 
                                      Which in turn has the string shown above

    For Each str_get As String In str_Info

    Next
End Sub

私の分割は私の要件を満たしていないと思います。助言がありますか ?

4

2 に答える 2

2

Textfieldparser をお勧めします。

    Dim tfp As New TextFieldParser("data.txt")
    With tfp
        .HasFieldsEnclosedInQuotes = True
        .SetDelimiters(",")
    End With
    Dim fields = tfp.ReadFields
    For Each field In fields
        Debug.Print(field)
    Next

これで、各フィールドで必要なことを行うことができます。より強い型付けが必要な場合は、www.filehelpers.netを使用して、入力から「逆シリアル化」されるクラスを作成できます。

Filehelper を使用すると、次のようになります。

Private Class SatlistConverter
    Inherits ConverterBase

    Public Overrides Function StringToField(from As String) As Object
        Return Strings.Split([from], " - ").ToList
    End Function
End Class

<DelimitedRecord(",")>
Private Class TheRecord
    <FieldQuoted>
    Public IP1, IP2, ISOCountry, Country, Something, City, Region, SomethingElse, Lattitude, Longitude, Provider As String
    <FieldQuoted, FieldConverter(GetType(SatlistConverter))>
    Public Satlist As List(Of String)
End Class

    Private Sub foo()

    Dim e As New FileHelperEngine(Of TheRecord)
    Dim records = DirectCast(e.ReadFile("data.txt"), TheRecord())
    For Each r In records
        Debug.Print(r.IP1)
        Debug.Print(r.IP2)
        For Each s In r.Satlist
            Debug.Print(s)
        Next
    Next

End Sub

Filehelper にはさらに多くの可能性がありますが、ジャンプ スタートとしては十分かもしれません。

個人的には、文字列の配列だけでなく、より厳密に型指定されたもの (組み込みのコンバーターを使用して、たとえば "2" を整数にすることができることに注意してください) を取得するというアイデアが好きです。

編集CustomConverter の使用を示すために更新されたサンプル

于 2012-11-27T11:52:52.310 に答える
1

これはそれを行う必要があります

    Dim noQuotes = Textbox1.Text.Replace("""", "") ' Remove quotes
    Dim split = noQuotes.Split(",") ' Split on commas

    Dim result As New List(Of String)()

    For Each str_get As String In split
        Dim splitStr = str_get.Split("-") ' Perform secondary split on dash
        For Each str_split As String In splitStr
            result.Add(str_split.Trim()) ' Enter into result list
        Next
    Next

値のリストは次のようになりますresult

于 2012-11-27T11:45:26.417 に答える