Как получить первые 250 слов строки?Получить первые 250 слов из строки?
ответ
Необходимо разбить строку. Вы можете использовать overload без параметра (предполагаются пробелы).
IEnumerable<string> words = str.Split().Take(250);
Обратите внимание, что вам нужно добавить using System.Linq
для Enumerable.Take
.
Вы можете использовать ToList()
или ToArray()
ро создать новую коллекцию из запроса или сохранить память и перечислить ее непосредственно:
foreach(string word in words)
Console.WriteLine(word);
Update
Так как кажется, довольно популярны Я добавляю следующее расширение, которое более эффективно, чем метод Enumerable.Take
, а также возвращает коллекцию вместо (отложенное исполнение) запрос.
Используется String.Split
, где 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
«Если параметр разделителя имеет значение NULL или не содержит символов, символы пробела считаются разделителями». –
+1 ... Также, если бы вопрос был реальным, то поиск пространства/пробелов/разделителей был бы более подходящим (например, «\ w + \ s»), возможно, в сочетании с 'yield return', чтобы не читать за пределами первых 250 слов. –
@AlexeiLevenkov: Обратите внимание, что 'Split' без аргументов не совпадает с' Split ('') '. Он использует внутреннюю оболочку ['Char.IsWhiteSpace'] (http://msdn.microsoft.com/en-us/library/t809ektx.aspx), которая включает в себя несколько символов. –
yourString.Split(' ').Take(250);
Я думаю. Вы должны предоставить дополнительную информацию.
Почему вы создаете новый список из массива до 250? –
Я бы использовал take before ToList, чтобы воспользоваться ленивой оценкой IEnumerable – BlackBear
@TimSchmelter Tiping из памяти. Я не был уверен, что Array был IEnumerable. Это были не некоторые версии C# назад. Редактирование. Благодарю. – LMB
string testString = "The quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dog."
string firstWords = Regex.Match(testString, @"^(\w+\b.*?){250}").ToString();
Дополнение к Тиму ответ, это то, что вы можете попробовать
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());
String.Join ("", yourstring.Split(). Take (250) .ToArray())
Попробуйте это:
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);
}
Это возможно без вызова Take().
string[] separatedWords = stringToProcess.Split(new char[] {' '}, 250, StringSplitOptions.RemoveEmptyEntries);
Что также позволяет расщепление, основываясь на более чем просто пространство «» и, следовательно, фиксирует вхождений, когда пробелы неправомерно отсутствующий на входе.
string[] separatedWords = stringToProcess.Split(new char[] {' ', '.', ',' ':', ';'}, 250, StringSplitOptions.RemoveEmptyEntries);
Используйте StringSplitOptions.None
, если вы хотите, чтобы вместо него были возвращены пустые строки.
- 1. Как удалить первые 100 слов из строки?
- 2. Extract Первые 5 слов из строки
- 3. Получить первые N символов из строки без резки целых слов
- 4. Получить первые числа из строки
- 5. PHP Какой лучший способ получить первые 5 слов строки?
- 6. Получить первые 6 символов из строки, отличные
- 7. Получить X первые/последние слова из строки
- 8. Получить первые отделан строки из многострочного текста
- 9. получить только первые 2 символа из строки
- 10. Как получить первые 5 символов из строки
- 11. Как получить первые N слов из NSString в Objective-C?
- 12. выберите 40 слов из строки
- 13. Regex, чтобы получить первые два слова неизвестной длины из строки
- 14. Получить первые n символов строки
- 15. Первые две буквы из слов Regex in R
- 16. Как получить первые 10 слов в строке в R?
- 17. Попытка получить несколько слов из каждой строки
- 18. получить все комбинации слов из строки
- 19. получить два общих слов из двух строки
- 20. Пропустить первые несколько слов из строки при подсчете слов в текстовом файле
- 21. Получить первые буквы из строки двух слов (PHP - самый быстрый способ)
- 22. Как получить только определенное количество слов из строки в php?
- 23. Подчеркивать первые n символов слов
- 24. исключить первые числовой из строки
- 25. Чтение слов из строки
- 26. Усечь строку, чтобы сохранить первые n слов
- 27. отображает первые N слов из поля базы данных в DataList
- 28. выберите только первые буквы слов из поля varchar
- 29. Regex побег (' "- \ |?!.)? И возвращать первые пять слов из текста
- 30. Прочтите только первые десять слов из текстового файла, используя php
'str.Split(). Take (250)' –
[Что вы пробовали?] (Http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect- question.aspx) – MyCodeSucks
Разделив строку пробелами – malinois