2013-12-06 4 views
1
Console.WriteLine("Insert the character you are searching for: "); 
CharacterSearch = Console.ReadLine(); 
var count = file.Where(x => x == CharacterSearch).Count(); 

Так что я пытаюсь сделать, это прочитать текст из переменной file, а затем выполнить поиск конкретного символа в строке, который вводится с клавиатуры. Таким образом, искомый символ будет CharacterSearch.Количество вхождений символа в строке и их позиции

Я также хочу проверить их позиции не только на количество вхождений.

+0

забыл сказать, что это не показывает количество апаров, потому что я получаю сообщение об ошибке «Оператор == не может использоваться для строк или символов». – xDevil

+1

Сначала [Как вы могли бы подсчитать вхождения строки внутри строки?] (Http://stackoverflow.com/questions/541954/how-would-you-count-occurrences-of-a-string-within-a- строка) – Liam

+0

Вы можете (и должны) изменить свой вопрос. – BartoszKP

ответ

1

Это очень неэффективно, но это вариант, файлы маленькие.

CharacterSearch = Console.ReadKey(); 
var count = File.ReadLines(pathToFile) 
    .Select((c, i) => new { Character = c, Index = i }) 
    .ToList() 
    .Where(x => x.Character == CharacterSearch); 
+0

@BartoszKP, хороший звонок там! –

+0

i get the error Char не содержит определения KeyChar – xDevil

+0

@ user2524603, см. Мое редактирование. –

1

Почему не просто использовать этот метод? (Вы ищете сложную?)

List<int> indexes = new List<int>(); 

for (int i = 0; i < file.Length; i++) 
{ 
    if (file[i]==CharacterSearch) 
    { 
     indexes.Add(i);  
    } 
} 

int count = indexes.Count; 
+0

файл [i] == Линия CharacterSearch имеет ту же ошибку, что и до того, как этот оператор == не может быть использован для Char и String – xDevil

+1

@ user2524603 Потому что вам нужен 'char CharacterSearch = Console.ReadKey(). KeyChar;' –

+0

Я тестирую этот метод, он работает. –

0

Неэффективен, но может применяться, если файл небольшой.

public static int CharCount(string input,char c) 
{ 
    var charCount=input.GroupBy(a => a).ToDictionary(k => k.Key, v => v.Count()); 
    if (charCount.ContainsKey(c)) 
     return charCount[c]; 
    return 0; 
} 

Если вы хотите сделать поиск по Чрезмерно в одной и той же строки, я думаю, что лучше поддерживать отображение. Снова значительная только для небольшого файла.

public static Dictionary<char, int> CharCountMapping(string input) 
{ 
    return input.GroupBy(a => a).ToDictionary(k => k.Key, v => v.Count()); 
} 
Смежные вопросы