1

私はC#が初めてです。2 つの文字列があり、それらは国際音声記号の文字を表しています。

String 1 - ðə ɻɛd fɑks ɪz hʌŋgɻi 
String 2 - ðæt ɪt foks ɪn ðʌ sʌn ɻe͡i 

ここで、 と比較String 1して、 との違いString 2を見つける必要があります。この値はパーセンテージ値として必要です。これどうやってするの?小さなコード例は私に大いに役立ちます。どうぞよろしくお願いいたします。String 2String 1

4

2 に答える 2

8

文字列メトリックが何であるかを伝える必要があります

また、このHow to find difference between two strings - C# question もご覧ください。

これは文字を文字ごとに比較します。文字列の違いを比較するときに一般的なLlevenshtein Distanceとは異なります。

void Main()
{
    string str1 = "ðə ɻɛd fɑks ɪz hʌŋgɻi";
    string str2 = "ðæt ɪt foks ɪn ðʌ sʌn ɻe͡i";
    Console.WriteLine(StringCompare(str1,str2)); //34.6153846153846
    Console.WriteLine(StringCompare("same","same")); //100
    Console.WriteLine(StringCompare("","")); //100
    Console.WriteLine(StringCompare("","abcd")); //0  
}

static double StringCompare(string a, string b)
{
    if (a == b) //Same string, no iteration needed.
        return 100;
    if ((a.Length == 0) || (b.Length == 0)) //One is empty, second is not
    {
        return 0;
    }
    double maxLen = a.Length > b.Length ? a.Length: b.Length;
    int minLen = a.Length < b.Length ? a.Length: b.Length;
    int sameCharAtIndex = 0;
    for (int i = 0; i < minLen; i++) //Compare char by char
    {
        if (a[i] == b[i])
        {
            sameCharAtIndex++;
        }
    }
    return sameCharAtIndex / maxLen * 100;
}
于 2013-05-30T16:00:56.167 に答える