0

私のリクエストは、検索である程度数字を抽出できるものです。

例: animalsOwned|4「4」を含む値を返します

animals|3|2|1|3「3」、「2」、「1」、「3」を含む配列を返します

これにより、ファイル ストリーム リーダーの実行が容易になります。ありがとうございました

4

4 に答える 4

2
Dim astring = "ABCDE|1|2|3|4"

Dim numbers = (From s In astring
               Where Char.IsDigit(s)
               Select Int32.Parse(s)).ToArray()

この LINQ ステートメントが役立ちます。文字列内の各文字が数字かどうかを確認するだけです。これは 1 桁の数字にのみ適用されることに注意してください。"ABC123" が 123 対 1、2、3 の配列を返すようにしたい場合は、もう少し複雑になります。

于 2012-12-28T04:16:55.513 に答える
1

正規表現を試してください。これは、単純なテキスト解析のための強力なツールです。

Imports System.Text.RegularExpressions
Namespace Demo
    Class Program
        Shared Function Main(ByVal args As String()) As Integer
            Dim array As Integer() = ExtractIntegers("animals|3|2|1|3")
            For Each i In array
                Console.WriteLine(i)
            Next
            Return 0
        End Function
        Shared Function ExtractIntegers(ByVal input As String) As Integer()
            Dim pattern As String = "animals(\|(?<number>[0-9]+))*"
            Dim match As Match = Regex.Match(input, pattern)
            Dim list As New List(Of Integer)
            If match.Success Then
                For Each capture As Capture In match.Groups("number").Captures
                    list.Add(Integer.Parse(capture.Value))
                Next
            End If
            Return list.ToArray()
        End Function
    End Class
End Namespace
于 2012-12-28T04:38:40.837 に答える
0

variable.Split("|")を実行してから、各ピースを配列レベルに割り当てることができます。

文字列をカウントし、whileまたはforループを使用して、分割されたセクションを配列レベルに割り当てることができます。IsNumeric()次に、各配列レベルのチェックを実行できます。

于 2012-12-28T04:38:51.310 に答える
0

私はしばらく VB をプログラミングしていませんが、疑似コードをいくつか紹介します。まず、ファイルの各行をループします。この変数を Line と呼びます。次に、検索対象のインデックスを取得します。Line.indexOf("animalsOwned") のように、-1 が返された場合は存在しません。継続する。見つかったら、Index 変数を検索文字列の長さに 1 追加します。 (Index=Index+1+Len(searchString)) 次に、そこから始まる部分文字列を取得し、行末で終了します。部分文字列を | で分解します。各文字を配列に追加します。配列を返します。

あまりお力になれず申し訳ありませんが、私は現在、重要な PHP Web サイトに取り組んでいます ;)。

于 2012-12-28T04:22:51.627 に答える