2015-03-03 53 views
-1

我有兩個從我的數據庫中獲取的名稱。字符串中的字符比較然後返回一個整數值並計算出百分比

string query1 = SELECT FIRSTNAME FROM STUDENT; 
string query2 = SELECT FIRSTNAME FROM CUSTOMER; 

查詢1的結果是RESET,查詢2的結果是例如SET。我想比較這兩個字符串,並以整數獲得匹配並計算百分比。在上面的例子中,匹配是3.所以%將是3/5 * 100.我可以使用哪種C#函數來比較字符串?我想在C#代碼中進行比較,而不是使用SQL。

+0

目前尚不清楚應該如何完成匹配......子串?字符一個字符? SR是RESET的匹配嗎?舉一些例子。 – xanatos 2015-03-03 12:21:17

+1

正如鏈接的其他問題所寫的,你需要給我們[字符串指標](http://en.wikipedia.org/wiki/String_metric) – xanatos 2015-03-03 12:22:28

+1

不確定,但看起來你基本上正在採取總計 - Levenshtein距離然後計算百分比? – Robert 2015-03-03 12:26:35

回答

0

這將檢查一個字符串是否是另一個字符串的子R(給出在你的例子RESET vs SET)。請注意,它是反射式的,所以RESET vs SET == SET與RESET。如果你需要檢查子字符串(所以RESE vs SET == 2/4 == 0.5或其他),那麼你需要解釋你想要的。

public static double Percentage(string str1, string str2) { 
    // Handling of empty strings. No divisions by zero here! 
    if (string.IsNullOrEmpty(str1) || string.IsNullOrEmpty(str2)) { 
     return 0.0; 
    } 

    // str2 is contained in str1 
    if (str1.Contains(str2)) { 
     return 100.0 * str2.Length/str1.Length; 
    } 

    // str1 is contained in str2 
    if (str2.Contains(str1)) { 
     return 100.0 * str1.Length/str2.Length; 
    } 

    // No matching 
    return 0.0; 
} 
0

給定兩個字符串,長度爲n的S和長度爲m,其中n<米,你可以不喜歡

float percentage = 0; 
int index = R.substring(S); 
if(index > 0) { 
    percentage = R.Length/S.Length * 100; 
}