文字列の最初の250語を取得するにはどうすればよいですか?
質問する
9582 次
6 に答える
28
文字列を分割する必要があります。パラメータなしでオーバーロードを使用できます(空白が想定されます)。
IEnumerable<string> words = str.Split().Take(250);
using System.Linq
forを追加する必要があることに注意してください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 に答える