如何获得字符串的前250个单词?
答案 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
。