从字符串C#

时间:2017-08-17 12:49:40

标签: c# string

我正在查看有关数据挖掘算法的教程,并且无法从教程中复制一行代码来生成我自己的“词汇表”变量(正如教程所称)。

教程页面上的代码基本上是:

List<string> x = textBox1.Text.Split(',').ToList();
var vocabulary = x.SelectMany(GetWords).Distinct().OrderBy(word => word).ToList();

但是当我将它复制到visual studio时,我收到以下错误:

  

当前上下文中不存在“GetWords”这个名称。

相信我,我不会遗漏教程中的任何内容。我正在寻找的是一种实现以下目标的方法:

enter image description here

采取这样做并生成这样的东西:

enter image description here

(忽略教程图片上的数字)

我尝试了以下代码,但它们返回字符串中的所有元素:

        //var vocabulary = x.OrderBy(q => q).Distinct().ToList();

        //var vocabulary = (from w in x
        //                  select w).Distinct().ToList();

        //         IEnumerable<Word> vocabulary =
        //(from w in x.Distinct()
        // select new Word { Text = w.ToString() }).ToList();

Link to the tutorial

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

 private static IEnumerable<string> GetWords(string x)
    {
        return x.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
    }

我应该彻底用Google搜索。这段代码有效。感谢您的帮助。

答案 1 :(得分:0)

如果输入看起来像您的CSV文件,请考虑:

import numpy as np

np.random.seed(100)

MAX_NUM = 100000
numbers = np.random.randint(0, MAX_NUM, size=100000)
problem_numbers = np.unique(np.random.randint(0, MAX_NUM, size=500))
alternative_numbers = np.random.randint(0, MAX_NUM, size=len(problem_numbers))

%timeit method_itzik(numbers, problem_numbers, alternative_numbers)
10 loops, best of 3: 63.3 ms per loop

# This method expects lists
problem_numbers_l = list(problem_numbers)
alternative_numbers_l = list(alternative_numbers)
%timeit method_mseifert(numbers, problem_numbers_l, alternative_numbers_l)
10 loops, best of 3: 20.5 ms per loop

%timeit method_divakar(numbers, problem_numbers, alternative_numbers)
100 loops, best of 3: 9.45 ms per loop

%timeit method_jdehesa(numbers, problem_numbers, alternative_numbers)
1000 loops, best of 3: 822 µs per loop

这将获取每行逗号之前的文本,然后删除重复项。