Слова количества HashSet IntersectWith, но только уникальный

Установите правильный размер изображения: @ 1x = 22px, @ 2x = 44px @ 3x = 88px.

Затем

let leftBarButtonItem = UIBarButtonItem(image: yourUIImage, style: .plain, target: self, action: #selector(action))
leftBarButtonItem.tintColor = UIColor.red
navigationItem.leftBarButtonItem = leftBarButtonItem

или

let btn = UIButton(type: .custom)
btn.addTarget(self, action: #selector(contactMe), for: .touchUpInside)
btn.setImage(#imageLiteral(resourceName: "open"), for: .normal)
1
задан Ibrahim AKGUN 11 June 2009 в 09:00
поделиться

2 ответа

Вывод, что вы хотите:

файл:

foo
foo
foo
bar

текстовое поле:

foo
foo
bar
bar

, чтобы получить '3' (2 фуза и одна полоса)

Dictionary<string,int> fileCounts = new Dictionary<string, int>();
using (var sr = new StreamReader("c:\\test.txt",Encoding.Default))
{
    foreach (var word in sr.ReadLine().ToLower().Split(' '))
    {
        int c = 0;
        if (fileCounts.TryGetValue(word, out c))
        {
            fileCounts[word] = c + 1;
        }
        else
        {
            fileCounts.Add(word, 1);
        }                   
    }
}
int total = 0;
foreach (var word in richTextBox1.Text.ToLower().Split(' '))
{
    int c = 0;
    if (fileCounts.TryGetValue(word, out c))
    {
        total++;
        if (c - 1 > 0)
           fileCounts[word] = c - 1;                
        else
            fileCounts.Remove(word);
    }
}
MessageBox.Show(total.ToString());

Обратите внимание, что это деструктивно изменив прочитанный словарь, вы можете избежать этого (так что вам нужно прочитать словарь только один раз). Купите просто подсчитав таким же образом поле форматированного текста, а затем взяв Min отдельных подсчетов и суммируя их.

1
ответ дан 3 September 2019 в 01:28
поделиться

Вам нужно, чтобы количество совпадало? Вам нужно подсчитать слова, затем ...

    static Dictionary<string, int> CountWords(string[] words) {
        // use (StringComparer.{your choice}) for case-insensitive
        var result = new Dictionary<string, int>();
        foreach (string word in words) {
            int count;
            if (result.TryGetValue(word, out count)) {
                result[word] = count + 1;
            } else {
                result.Add(word, 1);
            }
        }
        return result;
    }
        ...
        var set1 = CountWords(word);
        var set2 = CountWords(word2);

        var matches = from val in set1
                      where set2.ContainsKey(val.Key)
                         && set2[val.Key] == val.Value
                      select val.Key;
        foreach (string match in matches)
        {
            Console.WriteLine(match);
        }
1
ответ дан 3 September 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: