获得一个字符串的前250个单词?

时间:2012-11-13 20:36:08

标签: c# string

如何获得字符串的前250个单词?

6 个答案:

答案 0 :(得分:27)

您需要拆分字符串。您可以使用不带参数的overload(假定为空格)。

IEnumerable<string> words = str.Split().Take(250);

请注意,您需要为using System.Linq添加Enumerable.Take

您可以使用ToList()ToArray()从查询创建新集合或保存内存并直接枚举:

foreach(string word in words)
    Console.WriteLine(word);

<强>更新

由于它似乎很受欢迎,我正在添加以下扩展,它比Enumerable.Take方法更有效,并且还返回集合而不是(延迟执行)查询。< / p>

它使用String.Split,如果separator参数为null或不包含任何字符,则假定white-space characters为分隔符。但该方法还允许传递不同的分隔符:

public static string[] GetWords(
       this string input,
       int count = -1,
       string[] wordDelimiter = null,
       StringSplitOptions options = StringSplitOptions.None)
{
    if (string.IsNullOrEmpty(input)) return new string[] { };

    if(count < 0)
        return input.Split(wordDelimiter, options);

    string[] words = input.Split(wordDelimiter, count + 1, options);
    if (words.Length <= count)
        return words;   // not so many words found

    // remove last "word" since that contains the rest of the string
    Array.Resize(ref words, words.Length - 1);

    return words;
}

可以轻松使用:

string str = "A B C   D E F";
string[] words = str.GetWords(5, null, StringSplitOptions.RemoveEmptyEntries); // A,B,C,D,E

答案 1 :(得分:9)

yourString.Split(' ').Take(250);

我猜。您应该提供更多信息。

答案 2 :(得分:4)

String.Join(“”,yourstring.Split()。Take(250)。ToArray())

答案 3 :(得分:0)

除了Tim回答,这是你可以尝试的

IEnumerable<string> words = str.Split().Take(250);
StringBuilder firstwords = new StringBuilder();
foreach(string s in words)
{
   firstwords.Append(s + " ");
}
firstwords.Append("...");
Console.WriteLine(firstwords.ToString());

答案 4 :(得分:0)

试试这个:

public string TakeWords(string str,int wordCount)
{
    char lastChar='\0';
    int spaceFound=0;
    var strLen= str.Length;
    int i=0;
    for(; i<strLen; i++)
    {
        if(str[i]==' ' && lastChar!=' ')
        {
            spaceFound++;
        }
        lastChar=str[i];
        if(spaceFound==wordCount)
            break;
    }
    return str.Substring(0,i);
}

答案 5 :(得分:0)

可以不调用Take()。

string[] separatedWords = stringToProcess.Split(new char[] {' '}, 250, StringSplitOptions.RemoveEmptyEntries);

这也允许基于不仅仅是空格“”进行拆分,因此可以在输入中错误地缺少空格时修复出现。

string[] separatedWords = stringToProcess.Split(new char[] {' ', '.', ',' ':', ';'}, 250, StringSplitOptions.RemoveEmptyEntries);

如果您想要返回空字符串,请使用StringSplitOptions.None