私のリクエストは、検索である程度数字を抽出できるものです。
例:
animalsOwned|4
「4」を含む値を返します
animals|3|2|1|3
「3」、「2」、「1」、「3」を含む配列を返します
これにより、ファイル ストリーム リーダーの実行が容易になります。ありがとうございました
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 の配列を返すようにしたい場合は、もう少し複雑になります。
正規表現を試してください。これは、単純なテキスト解析のための強力なツールです。
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
variable.Split("|")
を実行してから、各ピースを配列レベルに割り当てることができます。
文字列をカウントし、whileまたはforループを使用して、分割されたセクションを配列レベルに割り当てることができます。IsNumeric()
次に、各配列レベルのチェックを実行できます。
私はしばらく VB をプログラミングしていませんが、疑似コードをいくつか紹介します。まず、ファイルの各行をループします。この変数を Line と呼びます。次に、検索対象のインデックスを取得します。Line.indexOf("animalsOwned") のように、-1 が返された場合は存在しません。継続する。見つかったら、Index 変数を検索文字列の長さに 1 追加します。 (Index=Index+1+Len(searchString)) 次に、そこから始まる部分文字列を取得し、行末で終了します。部分文字列を | で分解します。各文字を配列に追加します。配列を返します。
あまりお力になれず申し訳ありませんが、私は現在、重要な PHP Web サイトに取り組んでいます ;)。