从字符串中搜索子字符串并获取与最匹配的子字符串!
string [] allModels = { "Galaxy", "S3", "Galaxy S3" };
string title = "Samasung galaxy s3 is for sale";
string[] title_array = title.Split(' ');
string model = "";
foreach(var tit in title_array)
{
foreach(var mod in allModels)
{
if (mod.Equals(tit, StringComparison.OrdinalIgnoreCase))
{
model = mod;
}
}
}
所选模型为Galaxy
,但我需要Galaxy S3
(即最相似)。我怎样才能获得Galaxy S3
。
我应该使用Array.FindAll(target)
方法吗?
更新
按most similar
我的意思是与字符串(标题)匹配最多的子字符串(模型)
例如,在galaxy Samasung s3 is for sale
中,模型应为galaxy s3
(根据上述allModels
数组)
答案 0 :(得分:0)
Most similar?
不一定是Search substrings from a string and get a substring that matches the most!
我认为你想要一个最长的比赛......
string[] allModels = { "Galaxy", "S3", "Galaxy S3" };
string title = "Samasung galaxy s3 is for sale";
var mod = allModels.OrderByDescending(x => x.Length)
.FirstOrDefault(x => title.IndexOf(x,StringComparison.OrdinalIgnoreCase)>=0);
答案 1 :(得分:0)
这是一种查找包含标题最多单词的模型的方法。
var allModelsList = new List<String>(allModels);
var titles = new List<String>(title_array);
allModelsList.OrderByDescending(model => titles.Where(title => title.Equals(model, StringComparison.OrdinalIgnoreCase)).Count()).FirstOrDefault();