2015-09-08 2 views
0

Я нашел несколько решений, похожих на мой вопрос, но они не помогают. У меня есть список массивов, содержащий несколько строковых значений {«Apple», «Banana», «AppleBanana»}Распечатайте определенное слово из строкового массива в C#

Я хочу, чтобы иметь возможность извлекать Apple из каждой строки. Ниже приведено слово «Apple». Но как я могу извлечь Apple из AppleBanana?

string[] listOfString = { "Apple", "Banana", "Apple", "AppleBanana" }; 
var query = from string i in listOfString 
      group i by (i == "Apple") into appleString 
      select appleString; 

foreach (var item in query) 
{ 
    if (item.Key == true) 
    { 
     string[] Applyby = item.ToArray(); 

     foreach (var item2 in item) 
     { 
      Console.WriteLine(item2); 
     } 
    } 
} 
+3

Каков ваш ожидаемый выход после извлечения? –

+0

Вместо 'i ==« Apple »' use 'i.Contains (« Apple »), в общем, вы можете понять этот материал, прочитав документацию или даже играя с intellisense в visual studio. –

+0

Я ищу Apple Apple. – Anam

ответ

1

как о

string[] listOfString = { "Apple", "Banana", "Apple", "AppleBanana" }; 
var AppleItems = listOfString.Where(x => x.Equals("Apple")); 
foreach (string item in AppleItems) 
{ 
    Console.WriteLine(item); 
} 

Apple Apple возвращает

+0

@TicketForLessUK вы попробовали мой подход? – Byyo

0

Вы можете попробовать использовать C# Regex Class

string text = "AppleBanana"; 
Regex pattern = new Regex("Apple"); 
Match match = pattern.Match(text); 

string value = groups[ 1 ].Value; 
0
string[] listOfString = { "Apple", "Banana", "Apple", "AppleBanana" }; 
      string searchStr="Apple"; 
      int count=0; 
      foreach (string subStr in listOfString) 
      { 
      if (subStr.Contains(searchStr)) 
       count +=1; 
      } 
    Console.WriteLine("The occurence of " & searchStr & "is :" & count); 
// here count give the number of apples in the array 

Или же вы можете извлечь слова, которые содержат Apple:

  string[] listOfString = { "Apple", "Banana", "Apple", "AppleBanana" }; 
      string searchStr="Apple"; 
     Console.WriteLine("The following strings contains the word : " & searchStr); 
      foreach (string subStr in listOfString) 
      { 
       if (subStr.Contains(searchStr)) 
        Console.WriteLine(subStr); 
      } 
+0

Оба ваших решения дают мне пустой экран. – Anam

+0

см. Мои обновления в ответе. и убедитесь, что –

0

Я думаю, вы также захотите найти подстроки. Тогда вы не можете использовать ==, но либо String.Contains, либо String.IndexOf. Преимущество последнего заключается в том, что вы можете легко сделать это без учета регистра.

String.Contains:

var allWithApple = listOfString.Where(word => word.Contains("Apple")); 

String.IndexOf:

var allWithApple = listOfString 
    .Where(word => word.IndexOf("apple", StringComparison.InvariantCultureIgnoreCase) >= 0); 

Вы можете выполнять запросы LINQ с foreach или создать новый String[] с ToArray.

foreach(string wordWithApple in allWithApple) 
    Console.WriteLine(wordWithApple); 
+0

Не помогая @Tim, я все еще получаю результаты с AppleBanana. – Anam

+0

@TicketForLessUK: запомнить свои собственные слова: «Но как я могу извлечь Apple из AppleBanana word» _. Если вы этого не хотите, вам не нужно искать подстроки. Затем вы можете использовать '==' или 'Equals'. –

0
string[] listOfWords = { "Apple", "Banana", "Apple", "AppleBanana" }; //this is case-sensitive 
listOfWords.Where(x => x.Contains("Apple")).Select(a => Console.WriteLine(a)); 

Это будет печатать Apple Apple AppleBanana (в новых линий). Если вы хотите просто «Apple» для всех слов, вы можете просто записать это.

string[] listOfWords = { "Apple", "Banana", "Apple", "AppleBanana" }; 
listOfWords.Where(x => x.Contains("Apple")).Select(a => Console.WriteLine("Apple")); 
Смежные вопросы