字符串相似度和模式匹配

时间:2013-06-02 03:50:22

标签: c# .net string

说我有像这样的字符串

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]);
});

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

2 个答案:

答案 0 :(得分:3)

这是你可以使用的正则表达式模式:

(.+) is (Boy|Girl)

答案 1 :(得分:0)

以下内容可能更快,但您应该对其进行测试。

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类,它可能比上面更快或更慢。没有测试就很难说。