2017-01-02 35 views
5

değeri olup olmadığını nasıl kontrol ederim Dize içerdiğini/içermediğini ve değer içeriyorsa ve başka bir değer içeriyorsa nasıl tanımlanacağımı anlamaya çalışıyorum.Dizin liste değeri içeriyorsa ve ayrı olarak içeriyorsa ayrı olarak

Ben girdi dizesi varsa:

string inputString = "it was one"; 

ve ben durum için belirli bir değer bulmak istiyorum:

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"); 
} 

Ama emin değilim ben de üçüncü durumu hakkında bilmek istiyorsanız uygun bir yoldur ne dizge değer içeriyorsa ancak başka kelimeler de içeriyorsa. dize için

: inputString = "it was one"; istenen sonucu olmalıdır:

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

: inputString = "one";

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

ve için: inputString = "it was";

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

cevap

4

Ben sizin gibi bir şey arıyor düşünüyorum bu:

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"; 
} 

Bir örneği neden kodunun altına kullanmayın here

+0

bulabilirsiniz. örneğin => ** sıfır bir iki **. Ekstraları kaldırmak onunla başa çıkabilirdi. (SO yorum giriş alanı zaten var olanları kaldırır. Lol) – Badiparmagi

+0

Eğer kelimeler arasında boşluklar varsa, boş alanları hariç tutmak için 'StringSplitOptions.RemoveEmptyEntries' kullanabilirsiniz, sonrası güncellemelere bakın –

+1

@ un şanssız Merhaba, Cevap gibi görünüyor, ancak StringSplitOptions.RemoveEmptyEntries kullanıp kullanmadığımdan emin değilim. – nikorio

1

deneyebilirsiniz? Başarısız olduğu bir durumu düşünemiyorum. Eğer bölümü 'inputString` sonra başka bir döner her bir kelime arasında birden fazla boşluk varsa

  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"); 
      } 

derecede rol here

+0

merhaba kelimeler arasında sadece bir boşluk izin, her iki şekilde yararlı, bazı durumlarda bu daha uygun olabilir , bağlıdır. Her iki cevap da kullanılabilir – nikorio

İlgili konular