簡體   English   中英

比較C#中的多個字符串

[英]Compare multiple strings in C#

我希望能夠相互比較多個字符串,如果它們都相等,則返回true 如果任何字符串等於“ N / A”,則在比較中將忽略它們。 例如:

string1 = "hi";
string2 = "hi";
string3 = "hi";
string4 = "N/A";

將返回true ,但是:

string1 = "hi";
string2 = "hey";
string3 = "hi";
string4 = "hi";

將返回false

謝謝你的幫助。

if (myStrings.Where(s => s != "N/A").Distinct().Count() > 1)

假設您已將字符串存儲在數組或列表之類的Enumerable.All中,則可以使用Enumerable.All

string first = strings.FirstOrDefault(s => s != "N/A");
bool allEqual = first == null ||  strings.All(s => s == "N/A" || s == first);

說明 :您可以將所有字符串與您選擇的一個字符串(我取第一個)進行比較,如果一個字符串不同,則allEqual必須為false。 我需要使用FirstOrDefault因為所有字符串都可能是“ N / A”或列表為空,那么First將引發異常。

演示

這個問題已經回答了,但是我想我將陳述最明顯的代碼來做到這一點:

bool notEqual = false;
for (int i = 0; i < list.Count - 1; i++) {
   for (int j = i + 1; j < list.Count; j++) {
      if (!(list[i].Equals(list[j])) {
         notEqual = true;
         break;
      }
   }
}

這個想法很簡單。 對於第一個元素,您必須查看下一個(長度-1)元素。 但是,對於第二個元素,您已經將其與第一個元素進行了比較,因此您將查看下一個(長度-2)元素。 您的長度為1-因為此時您將比較倒數第二個和最后一個元素,這是最終可能的比較。

無論如何,以上答案都更為簡潔/優雅。 這只是為了向您展示在最基本的C#方面實際發生的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM