2017-07-04 11 views
0

私はそれが正確な文字列が何であるかをドロップダウンメニューで、両方Photoshop 225php 210を取得"ph2"ようなものとして、検索のためのは、いくつかのキーワードで、アレイ内の検索を行うには

books={'java 350','Photoshop 225','php 210','JavaScript 80','python 180','jquery 250'} 

私の入力のようなものである配列を持っていますこのタスクを実行するための関数、またはこのタスクを実行するために使用できる任意のセットコード。私は

if (array.Any(keyword.Contains)) 

if (array.Contains(keyword)) 

のような機能で、いくつかのビルドを使用してい

それは私がいずれかplsは事前にこの感謝を解決するために私を助けたい正確に何を助けていないのです。.. ...

+0

あなたが検索を実行するコードを共有することはできますか? –

答えて

0

そのタイトルとその番号で始まるすべての書籍を検索したいと思います。

string[] books = { "java 350", "Photoshop 225", "php 210", "JavaScript 80", "python 180", "jquery 250" }; 

string input = "ph2"; 
string titlePart = string.Concat(input.TakeWhile(char.IsLetter)); 
string pagesPart = string.Concat(input.SkipWhile(char.IsLetter).TakeWhile(char.IsDigit)); 


var matches = books.Select(b => b.Split()) 
.Select(arr => new 
{ 
    Title = arr[0].Trim(), 
    Pages = arr.ElementAtOrDefault(1)?.Trim() ?? string.Empty 
}) 
.Where(b => b.Title.StartsWith(titlePart, StringComparison.InvariantCultureIgnoreCase) 
     && (pagesPart.Length == 0 || b.Pages.StartsWith(pagesPart))); 
0

より柔軟なアプローチ:

using Microsoft.VisualBasic; // add reference 
using Microsoft.VisualBasic.CompilerServices; 
using System.Linq; 

namespace ConsoleApplication 
{ 
    class Program 
    { 
     static void Main (string[] args) 
     { 
      string[] books = { "java 350", "Photoshop 225", "php 210", "JavaScript 80", "python 180", "jquery 250" }; 

      string input = "*" + string.Join ("*", "ph2".ToArray()) + "*"; // will be *p*h*2* 

      var matches = books.Where (x => LikeOperator.LikeString (x, input, CompareMethod.Text)); 
     } 
    } 
} 
関連する問題