2014-11-01 2 views
2

Название походит Т.Л., дг версии, вот что я имею в виду:категоризация строка на основе входных данных в C#

Я сделал себе только строку (чтобы быть файл с текстом), и я разделив эту строку в отдельные слова. Я хотел бы сделать метод, который позволяет мне помечать слова на основе строки/файла. Например:

string nameOfString = "John likes pancakes"; 

Categorize(string nameOfString, class nameOfCategory)

этот метод сделает Джон, любит и блины в категорию (например, Stupid, bestTexts) я перешел к nameOfCategory. Я хотел бы рассчитать слова во всех категориях, поэтому, вероятно, следует использовать какой-то массив, сделай это. Может кто-то помочь мне с этим? Большая проблема заключается в том, что я действительно не знаю, как передать категорию (как отдельный класс или просто строку, может быть, строку []?) И все еще иметь возможность подсчитать ее.

+0

Знаете ли вы, сколько категорий у вас будет? – MVCDS

+0

@MVCDS Количество категорий будет, вероятно, два (2). –

+0

@YuvalItzchakov Я сейчас читаю о http://msdn.microsoft.com/en-us/library/system.componentmodel.categoryattribute%28v=vs.110%29.aspx, но idk, если это мне каким-то образом поможет. –

ответ

1
static void Main(string[] args) 
{ 
    var inputList = new List<string> 
    { 
     "John likes pancakes", 
     "John hates watching TV", 
     "I like my TV", 
    }; 

    var dic = new Dictionary<string, int>(); 
    inputList.ForEach(str => AddToDictionary(dic, str)); 

    foreach (var entry in dic) 
     Console.WriteLine(entry.Key + ": " + entry.Value); 
} 

static void AddToDictionary(Dictionary<string, int> dictionary, string input) 
{ 
    input.Split(' ').ToList().ForEach(n => 
    { 
     if (dictionary.ContainsKey(n)) 
      dictionary[n]++; 
     else 
      dictionary.Add(n, 1); 
    }); 
} 
+0

Я отмечу это как ответ, я новичок в C# и не знаю Dictoriany thingy :) Спасибо, за документацию! Еще один вопрос, это похоже на счетчик для меня (еще не построил его, а не на ПК) - есть ли какой-либо метод, позволяющий мне добавить их в отдельные категории, или просто попробую с помощью «if x then y», ? –

+0

Вы можете сделать 'Dictionary >'. Если словарь 'ContainsKey (n)' где 'n' теперь является именем вашей категории, вы ничего не делаете. Кроме того, вы добавляете новую категорию в словарь. Затем в основной функции в цикле 'foreach' вы можете заменить' entry.Value' на 'entry.Count', чтобы отобразить количество строк в каждой категории. Это потому, что 'entry' теперь является« List », а не' string'. Во всяком случае, это некоторые изменения. Вы должны быть в состоянии настроить его на свои нужды. При необходимости обращайтесь за помощью :) – mihai

+0

Хм, это «n» категория или «слово» (скажем, телевизор, Джон)? По-моему, это слово, я ошибаюсь? –

Смежные вопросы