字符串相似度和模式匹配



假设我有这样的字符串

Sam is Boy
Joseph is Boy
Jasmine is Girl
Annie is Girl
Chris is Boy

我有一个快速而模糊的方法来准备一个像这样的c#字典…!

input.ForEach(i =>
{
    string[] values = i.Split();
    input_dictionary.Add(values[0], values[2]);
});

由于输入数据遵循固定格式,如"姓名是性别",我们是否有其他更好/优化的方法来实现这一点?

这里有一个你可以使用的正则表达式模式:

(.+) is (Boy|Girl)

下面的代码可能更快,但是您应该进行测试。

input_dictionary = (from i in input
                    let n = i.IndexOf(' is ')
                    select new { Name = i.Substring(0, n), Sex = i.Substring(n + 4) }
                   ).ToDictionary(i => i.Name, i => i.Sex);

您还可以使用Regex类,它可能比上面的更快或更慢。没有测试很难说。

最新更新