2017-01-02 12 views
5

Tôi đang cố gắng xác định xem chuỗi có chứa/không chứa giá trị danh sách và nếu chứa nhưng có giá trị khác không.Cách kiểm tra xem chuỗi có chứa giá trị danh sách và riêng biệt nếu chứa nhưng có giá trị khác

Nếu tôi có chuỗi đầu vào:

string inputString = "it was one"; 

và tôi muốn tìm thấy giá trị cụ thể cho tình trạng:

var numbList = new List<string> {"zero", "one", "two"}; 

if (!numbList.Any(inputString.Contains)) 
{ 
    Console.WriteLine("string does not contains list value");           
} 
else 
{ 
    Console.WriteLine("string contains list value"); 
} 

Nhưng không chắc chắn một cách đúng đắn là gì nếu tôi muốn biết cũng về tình trạng của ba , nếu chuỗi chứa giá trị nhưng cũng chứa các từ khác.

Đối với chuỗi: inputString = "it was one"; kết quả mong muốn nên là:

Console.WriteLine("string contains list value and other words"); 

cho chuỗi: inputString = "one";

Console.WriteLine("string contains list value"); 

và cho: inputString = "it was";

Console.WriteLine("string does not contains list value"); 

Trả lời

4

Tôi nghĩ rằng bạn đang tìm kiếm cái gì đó như điều này:

if (inputString.Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries).All(x => numbList.Contains(x))) 
{ 
    opDisplay="string contains list value"; 
} 
else if (numbList.Any(x => inputString.Contains(x))) 
{ 
    opDisplay = "string contains list value and other words"; 
} 
else 
{ 
    opDisplay = "string does not contains list value"; 
} 

Bạn có thể thử một ví dụ here

+0

nếu có nhiều khoảng trống giữa mỗi từ trong 'inputString' sau đó nó sẽ trả về else if phần. ví dụ => ** không một hai **. loại bỏ thêm những người có thể xử lý nó. (SO bình luận khu vực đầu vào loại bỏ những người thêm đã. Lol) – Badiparmagi

+0

nếu họ là không gian bổ sung ở giữa các từ có nghĩa là, bạn có thể sử dụng 'StringSplitOptions.RemoveEmptyEntries' để loại trừ những không gian trống, xem các bản Cập Nhật trong bài viết –

+1

@ un-may mắn Xin chào, có vẻ như nó là câu trả lời, nhưng không chắc chắn nếu tôi không sử dụng StringSplitOptions.RemoveEmptyEntries những gì là reasult cho "nó là một"? – nikorio

1

tại sao không sử dụng dưới mã? tôi không thể nghĩ ra một điều kiện mà nó không thành công.

  string inputString = "it was one "; 
      var numbList = new List<string> { "zero", "one", "two" }; 
      if (numbList.Any(x => inputString.Contains(x))) 
      { 
       if (numbList.Any(x => inputString.Trim().StartsWith(x) && inputString.Trim().EndsWith(x))) 
       { 
        Console.WriteLine("string contains list value"); 
       } 
       else 
       { 
        Console.WriteLine("string contains list value and other words"); 
       } 
      } 
      else 
      { 
       Console.WriteLine("string does not contains list value"); 
      } 

tìm fiddle here

+0

hello, cả hai cách đều hữu ích, trong một số trường hợp , phụ thuộc. Dù sao cả hai câu trả lời đều có thể được sử dụng – nikorio

Các vấn đề liên quan