14

文字列の最初の250語を取得するにはどうすればよいですか?

4

6 に答える 6

28

文字列を分割する必要があります。パラメータなしでオーバーロードを使用できます(空白が想定されます)。

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

using System.Linqforを追加する必要があることに注意してくださいEnumerable.Take

クエリから新しいコレクションを使用ToList()またはToArray()作成するか、メモリを節約して直接列挙することができます。

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

アップデート

非常に人気があるように見えるので、アプローチよりも効率的で、(遅延実行された) queryEnumerable.Takeの代わりにコレクションを返す次の拡張機能を追加しています。

セパレーターパラメーターが null であるか、文字が含まれていない場合、空白文字が区切り文字と見なされるString.Split場所を使用します。ただし、このメソッドではさまざまな区切り文字を渡すこともできます。

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
于 2012-11-13T20:39:58.410 に答える
9
yourString.Split(' ').Take(250);

私は推測する。もっと情報を提供する必要があります。

于 2012-11-13T20:37:49.873 に答える
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);
}
于 2015-09-17T07:17:56.320 に答える