2017-05-24 22 views
-6

如何找到字符串之間的等價(不等於)值?如何識別字符串中的等價關係?

//Equivalent Values 
string A = "Beneficiation Return"; 
string B = "Return Beneficiation"; 
string C = "Beneficiation From Return"; 
string D = "Return From Beneficiation"; 

如果我使用

if(A == B)//Equal 

它只會比較平等的字符串,它們是等價的,但不等於,有沒有什麼辦法來驗證等價?

等效可以是:洗牌的話,有或沒有連接詞(只是 五:對於,到,在,從在),或者被洗牌,有連接詞

的代碼會結果:

("Beneficiation Return" == "Return Beneficiation")True 
("Beneficiation From Return" == "Return Beneficiation")True 
("Return Beneficiation" == "Return From Beneficiation")True 
+7

定義「等效」,然後將您的定義轉換爲代碼。 – SLaks

+0

你的世界平等和相等的區別是什麼? – mm8

+0

您是否試圖查看這些字符串在語義上是否相等,而不是語法上?如果是這樣的話,你就進入了NLP和AI領域,而這些語言並沒有提供開箱即用的功能。你必須自己定義這些規則。 – PoweredByOrange

回答

0

我認爲這是你在找什麼..

string a = "Beneficiation Return"; 
string b = "Return Beneficiation"; 
string c = "Beneficiation From Return"; 
string d = "Return From Beneficiation"; 

bool isSame = !a.Except(b).Any() && !b.Except(a).Any(); 

的布爾isSame將返回true因爲字符串a & b包含相同字符。 比較ac,它將返回false

+0

謝謝,刪除'連接詞',並使用它工作 –

+0

...除非字有不同的地方,像''benefic return'' –

+0

真的..一個簡單的'ToLower()'兩個字符串將阻止這 – DNKROZ

0

您可以創建一個輔助函數:接受A和B.在該函數equivalentStrings你可以做到以下幾點:

  1. 分裂兩個字符串A和B,和文字得到兩個陣列
  2. 檢查,如果他們有話(返回false如果不)
  3. 入住arrayA每個字的相同數量如果在arrayB同一個詞,如果是從兩個數組中刪除單詞如果不返回false
  4. 如果arrayA爲空(所有單詞都被刪除)返回true。