Nếu tôi có 5 biến Chuỗi và từ 0 đến 5 trong số đó là rỗng hoặc trống thì có cách dễ dàng/ngắn để trả về biến đầu tiên không phải là null hoặc trống? Tôi đang sử dụng NET 3,5Làm cách nào để trả lại biến chuỗi đầu tiên không rỗng hoặc rỗng
Trả lời
var myString = new string[]{first, second, third, fouth, fifth}
.FirstOrDefault(s => !string.IsNullOrEmpty(s)) ?? "";
//if myString == "", then none of the strings contained a value
chỉnh sửa: lấy ở đâu(), đặt vị trong FirstOrDefault(), nhờ Yuriy
private static string FirstNonEmptyString(params string[] values)
{
return values.FirstOrDefault(x => !string.IsNullOrEmpty(x));
}
gọi là như thế này:
Console.WriteLine(FirstNonEmptyString(one, two, three, four, five));
Xác định một phương pháp khuyến nông:
static string Or(this string value, string alternative) {
return string.IsNullOrEmpty(value) ? alternative : value;
}
Bây giờ bạn có thể nói như sau:
string result = str1.Or(str2).Or(str3).Or(str4) …
Nếu dây của bạn đang ở trong một IEnumerable
bạn có thể sử dụng First
hoặc FirstOrDefault
:
strings.First(s => !string.IsNullOrEmpty(s))
1) câu trả lời này đã được đưa ra 2) 'Đầu tiên' ném một IOE nếu tất cả các chuỗi rỗng hoặc rỗng – Will
@Will, 1) Tôi nghĩ rằng tôi là người đầu tiên đề xuất Đầu tiên/FirstOrDefault là một sự thay thế rõ ràng ở đâu. 2) Người hỏi không chỉ rõ hành vi mà anh ta muốn trong trường hợp tất cả các chuỗi đều rỗng/rỗng. Đó là lý do tại sao tôi đề nghị cả hai. –
hmmmm, đang diễn ra hồi tưởng về FOD. Lỗi của tôi. Tôi không tin anh ta nói bất cứ điều gì trong câu hỏi của anh ta về việc ném nếu tất cả các chuỗi đều không có giá trị. Bạn cũng không nói rằng sự thật nhỏ bé. "Ném đầu tiên" là thứ mà mọi người thường không nhận ra và nó sẽ cắn chúng vào mông. Nghĩ rằng nó có thể quan trọng đối với những người đọc để thấy điều đó. – Will
Nếu bạn đang sử dụng .NET 3.5 này rất dễ dàng với LINQ.
string[] strings = new[] {"", "a", "b", ""};
string firstNotNullOrEmpty =
strings.Where(s => !String.IsNullOrEmpty(s)).FirstOrDefault();
'Đầu tiên' có ghi đè khiến cho 'Where' vô nghĩa. Ngoài ra, nếu tất cả các chuỗi là null, bạn sẽ ném một InvalidOperationException ở đây. Mà sẽ hút ass. – Will
Tôi tìm thấy bao gồm Vị trí() giúp dễ đọc hơn. Tại sao nó sẽ ném 'InvalidOperationException'? – jrummell
mở LINQPad và thử điều này: '(new string [] {(string) null}) Đầu tiên (x =>! String.IsNullOrEmpty (x))' Bạn sẽ thấy nó ném một IOE, vì First() là được thiết kế để thực hiện nếu không có kết quả phù hợp. FirstOrDefault() không bao giờ ném nếu không tìm thấy kết quả phù hợp; nó chỉ trả về 'mặc định (T)'. – Will
var found = new[]{first, second, third, fourth, fifth}.FirstOrDefault(x =>!String.IsNullOrEmpty(x));
Yes.
string selected = null;
foreach(string currStr in strArray)
if(String.IsNullOrEmpty(currStr)==false)
{
selected = currStr;
break;
}
Không có cây biểu thức, không lạm dụng LINQ, không có tính năng ngôn ngữ tối nghĩa. Cùng một hiệu suất thời gian chạy và một sinh viên CS năm đầu tiên có thể tìm ra những gì bạn đang làm.
Tôi cảm thấy xấu cho các sinh viên CS năm đầu tiên, những người được giữ an toàn từ các tính năng ngôn ngữ tạo nên niềm vui. – Will
@Will: LINQ lạm dụng là một vấn đề nghiêm trọng ảnh hưởng đến cộng đồng của chúng tôi, cho phép tất cả là một phần của giải pháp không phải là vấn đề. – kervin
BTW Tôi yêu LINQ, tôi vừa chuyển đổi thư viện dựa trên XPath thành LINQ to XML tuần trước và EF là ORM của tôi. – kervin
- 1. .Trim() khi chuỗi rỗng hoặc rỗng
- 2. Làm thế nào tôi có thể trả lại một chuỗi rỗng (hoặc null) cho một PartialViewResult?
- 3. Chuỗi chia không trả kết quả rỗng
- 4. AccountManager.getAuthToken trả về chuỗi rỗng, đôi khi
- 5. Làm cách nào để kiểm tra xem biến char * có bị biến thành chuỗi rỗng không?
- 6. Clipboard.GetText trả về null (chuỗi rỗng)
- 7. Magento -> getSku() hoặc getData ('sku') trả về chuỗi rỗng
- 8. Chuỗi con của MySQL trả lại giá trị rỗng
- 9. glGetShaderInfoLog trả về chuỗi rỗng (android)
- 10. Nút JavascriptValue trả lại giá trị rỗng
- 11. Làm thế nào để chuyển đổi chuỗi rỗng thành chuỗi rỗng json.net
- 12. Chuỗi rỗng trong cột không rỗng trong MySQL?
- 13. Có cách nào dễ dàng để biến đầu vào biểu mẫu Java/Spring trống thành các chuỗi rỗng không?
- 14. JQuery val() trả về chuỗi rỗng
- 15. Làm cách nào để ẩn các tên biến Velocity rỗng?
- 16. Chọn phần tử nhịp đầu tiên không rỗng
- 17. Kiểm tra chuỗi rỗng hoặc không có giá trị
- 18. ToString trên chuỗi rỗng
- 19. Đặt rỗng DateTime biến
- 20. Làm cách nào để kiểm tra xem một int không rỗng hay rỗng?
- 21. rỗng vs chuỗi rỗng trong Oracle
- 22. Làm cách nào để kiểm tra xem biến môi trường chưa được đặt hoặc được đặt thành chuỗi rỗng?
- 23. Không có chuỗi rỗng trong Python
- 24. Scala getClass.getResource() trả về rỗng
- 25. Làm thế nào để biết một biến thể Delphi là một chuỗi rỗng?
- 26. VB.NET Chuỗi Mảng Rỗng
- 27. Làm thế nào để thay thế từ chuỗi rỗng giá trị rỗng trong java?
- 28. Python regex split mà không chuỗi rỗng
- 29. Chuỗi rỗng trong LINQ
- 30. Làm thế nào để trả về chuỗi rỗng thay vì null trong khung nhìn jbuilder?
Bạn có thể cập nhật câu hỏi của mình để chỉ ra phiên bản .NET bạn đang sử dụng không? –
.NET 3.5. Điểm tốt! –