Làm cách nào để nhận 250 từ đầu tiên của chuỗi?Nhận 250 từ đầu tiên của chuỗi?
Trả lời
Bạn cần chia chuỗi. Bạn có thể sử dụng overload không có tham số (khoảng trắng được giả định).
IEnumerable<string> words = str.Split().Take(250);
Lưu ý rằng bạn cần thêm using System.Linq
cho Enumerable.Take
.
Bạn có thể sử dụng ToList()
hoặc ToArray()
ro tạo ra một bộ sưu tập mới từ truy vấn hoặc tiết kiệm bộ nhớ và liệt kê nó trực tiếp:
foreach(string word in words)
Console.WriteLine(word);
Cập nhật
Kể từ khi nó có vẻ là khá phổ biến Tôi đang thêm phần mở rộng sau đây là hiệu quả hơn so với cách tiếp cận Enumerable.Take
và cũng trả về một bộ sưu tập thay vì (hoãn thực thi) truy vấn.
Nó sử dụng String.Split
trong đó white-space characters được giả định là dấu phân cách nếu thông số dấu tách là null hoặc không chứa ký tự. Nhưng phương pháp này cũng cho phép để vượt qua delimiters khác nhau:
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;
}
Nó có thể được sử dụng một cách dễ dàng:
string str = "A B C D E F";
string[] words = str.GetWords(5, null, StringSplitOptions.RemoveEmptyEntries); // A,B,C,D,E
"Nếu tham số dấu tách là null hoặc không chứa ký tự, thì ký tự khoảng trống được giả định là dấu phân cách." –
+1 ... Ngoài ra nếu câu hỏi là thực sự thì việc tìm kiếm không gian/khoảng trống/dấu tách sẽ thích hợp hơn (như "\ w + \ s"), có thể kết hợp với 'lợi nhuận' để không đọc 250 từ đầu tiên. –
@AlexeiLevenkov: Lưu ý rằng 'Tách' không có đối số không giống với' Tách ('') '. Nó sử dụng ['Char.IsWhiteSpace'] (http://msdn.microsoft.com/en-us/library/t809ektx.aspx) nội bộ bao gồm nhiều ký tự. –
yourString.Split(' ').Take(250);
Tôi đoán vậy. Bạn nên cung cấp thêm thông tin.
Tại sao bạn tạo danh sách mới từ mảng trước khi bạn lấy 250? –
Tôi muốn sử dụng trước khi ToList tận dụng lợi thế của đánh giá lười biếng của IEnumerable – BlackBear
@TimSchmelter Mẹo từ bộ nhớ. Tôi đã không chắc chắn nếu Array là IEnumerable. Nó không phải là một số phiên bản C# trước đây. Chỉnh sửa. Cảm ơn. – 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();
bổ sung Tim trả lời, đây là những gì bạn có thể thử
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() Lấy (250) .ToArray())
Hãy thử cái này:
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);
}
Có thể không gọi Take().
string[] separatedWords = stringToProcess.Split(new char[] {' '}, 250, StringSplitOptions.RemoveEmptyEntries);
Điều này cũng cho phép chia tách dựa trên nhiều không gian hơn "" và do đó khắc phục sự cố khi không gian bị thiếu không chính xác trong đầu vào.
string[] separatedWords = stringToProcess.Split(new char[] {' ', '.', ',' ':', ';'}, 250, StringSplitOptions.RemoveEmptyEntries);
Sử dụng StringSplitOptions.None
, nếu bạn muốn trả lại chuỗi trống.
- 1. Nhận từ đầu tiên của chuỗi
- 2. Nhận hàng đầu tiên của chuỗi tài nguyên mysql?
- 3. Xóa từ đầu tiên trong chuỗi Python?
- 4. Xóa hình thức đầu tiên của từ khỏi chuỗi?
- 5. Nhận ghi đầu tiên từ WMI ExecQuery
- 6. Nhận chữ cái đầu tiên của mỗi từ trong một chuỗi, trong Javascript
- 7. Nhận mục đầu tiên của linkedhashmap
- 8. Xóa ký tự đầu tiên của chuỗi
- 9. Nhận chuỗi đầu tiên trước dấu phân cách?
- 10. Python: Lấy ký tự đầu tiên của chuỗi đầu tiên trong danh sách?
- 11. Nhận chuỗi không trống đầu tiên từ danh sách trong python
- 12. Remove ký tự đầu tiên từ chuỗi nếu 0
- 13. Nhận chìa khóa đầu tiên từ javascript đối tượng
- 14. Nhận ký tự đầu tiên của một chuỗi, đó là giọng Pháp
- 15. Di char đầu tiên và cuối cùng từ chuỗi
- 16. Xóa từ đầu tiên khỏi chuỗi trong Java
- 17. Remove ký tự đầu tiên của một chuỗi trong Bash
- 18. jQuery - nhận lớp đầu tiên chỉ từ một yếu tố
- 19. Java: Nhận mặt hàng đầu tiên từ bộ sưu tập
- 20. Chỉ có thể nhận được ký tự đầu tiên của một chuỗi?
- 21. Chia chuỗi tại không gian đầu tiên
- 22. Cách sử dụng git repack -a -d --depth = 250 --window = 250
- 23. PHP Cách tốt nhất để có được 5 từ đầu tiên của chuỗi là gì?
- 24. Tách chuỗi tại không gian đầu tiên
- 25. Lấy và xóa ký tự đầu tiên của chuỗi
- 26. Cách lấy ký tự đầu tiên của chuỗi trong SQL?
- 27. Nhận org.springframework.beans.factory.BeanCreationException với Maven đầu tiên của tôi, Spring Project
- 28. Nhận 100 yếu tố đầu tiên của OrderedDict
- 29. Jquery- Nhận giá trị của td đầu tiên trong bảng
- 30. Nhận ngày Thứ Hai đầu tiên của tuần?
'str.Split(). Lấy (250)' –
[Bạn đã thử gì?] (Http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect- question.aspx) – MyCodeSucks
Bằng cách tách chuỗi ký tự bằng dấu cách – malinois