public static double SimilarityNoContains(string a, string b) { string a1 = ""; string b1 = ""; if (a==b) { return 1; } //消除重复 for (int i = 0; i < a.Length; i++) { string emtpy = a.Substring(i, 1).ToString(); if (a1.Length == 0) { a1 = emtpy; } if (a1.IndexOf(emtpy, 0) < 0) { a1 += emtpy; } } //消除重复 for (int i = 0; i < b.Length; i++) { string emtpy = b.Substring(i, 1).ToString(); if (b1.Length == 0) { b1 = emtpy; } if (b1.IndexOf(emtpy, 0) < 0) { b1 += emtpy; } } //计算相似度 if (a1.Length >= b1.Length) { int q = 0; for (int i = 0; i < b1.Length; i++) { for (int j = 0; j < a1.Length; j++) { if (b1.Substring(i, 1).ToString() == a1.Substring(j, 1).ToString()) { q += 1; } } } System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.PercentDecimalDigits = 2;//小数点保留几位数. provider.PercentPositivePattern = 1;//百分号出现在何处. double result = (double)q / (a1.Length + b1.Length - q);//一定要用double类型. return result; } else { int q = 0; for (int i = 0; i < a1.Length; i++) { for (int j = 0; j < b1.Length; j++) { if (a1.Substring(i, 1).ToString() == b1.Substring(j, 1).ToString()) { q += 1; } } } System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.PercentDecimalDigits = 2;//小数点保留几位数. provider.PercentPositivePattern = 1;//百分号出现在何处. double result = (double)q / (a1.Length + b1.Length - q);//一定要用double类型. return result; } }