2016-09-06 2 views
0

私はこのようになりますメモリに保持した文字列(「all_prices」)のビルドサーバから送られてきたデータを持っている:見つけ、VBで複数行の文字列内の特定のテキストを含む抽出ライン

4440|4420|4430|1720160906 
4430|4410|4420|1820160906 
4420|4400|4410|1920160906 

Iを"1820160906"を含む行を見つけて、それを独自の変数として分離する必要があります。可能なコードの軽量量の探索において

、私が試した:

MsgBox(File.ReadAllLines(all_prices).FirstOrDefault(Function(x) x.Contains("1820160906"))) 

all_prices(Of String).FirstOrDefault(Function(x) x.Contains("1820160906")) 

all_prices.FirstOrDefault(Function(x) x.Contains("1820160906")) 

のが、上記のいずれも

答えて

2
作動されていません

する必要がありますFirstOrDefaultを使用して一致する行を検索する前に、データを行に分割します。あなたが拡張メソッド:-)のラインを無視してワンライナーを(たい場合

Dim lines = all_prices.Split({vbCrLf, vbCr, vbLf}, StringSplitOptions.None) 
Dim match = lines.FirstOrDefault(Function(x) x.Contains("1820160906")) 

、あなたが拡張メソッドを作成し、その使用することができます。また

Module StringExtensions 
    <Extension> 
    Public Iterator Function ReadLines(input As String) As IEnumerable(Of String) 
     Using r = New StringReader(input) 
      Dim line = r.ReadLine() 
      While line IsNot Nothing 
       Yield line 
       line = r.ReadLine() 
      End While 
     End Using 
    End Function 
End Module 

Dim match = all_prices.ReadLines().FirstOrDefault(Function(x) x.Contains("1820160906")) 

を、EndsWithを使用して代わりにContainsより効率的です。

関連する問題