我想对字符串列表进行排序。我有 1000 个地址(一些用空格分隔的自定义地址数据)。第二件事是我的搜索查询。现在我想获取所有单词标记(没有数字)并按最小距离对它们进行排序。
例如
string query = "123 HAM";
// 1. get only "HAM" token
// 2. count distances
// 3. sort by them
//distance("HAM", "12 HAM DRIVE") -> 0
//distance("HAM", "13 HAM DRIVE") -> 0
//distance("HAM", "14 HAMER DRIVE") -> 2
//distance("HAM", "37 HAMMERSMITH AVENUE") -> 8
如果我的查询标记是,那么和之间的HAM
距离是 0,和之间的距离是 2(因为还有 2 个字母),等等。HAM
HAM
HAM
HAMER
HAMER
我得到“单词”标记:
private static IEnumerable<string> GetLetterTokens(string location)
{
string[] words = location.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
return words.Where(word => Regex.IsMatch(word.Trim(), @"^[a-zA-Z]+$"));
}
现在对于每个地址,我想计算这些距离并按它们排序。有什么快速的方法吗?我的意思是例如使用List<>.Sort
.
谢谢你的建议:)