如何比较两个字符串的条件?

时间:2012-04-07 11:32:27

标签: c# string string-comparison

我有一个段落,其中包含作者姓名:

  

Gopi,K.P。和Vijay,S。(1997)Computer Controlled Systems:Theory   和设计,第三版,Mc Graw-Hill,ND Cliffs,IND。

和另一个这样的段落:

  

这会导致数值上的困难(Gopi和Vijay,1997)。什么是   更多,当激活过程约束时,显着   闭环控制性能的恶化将会很明显   目睹一种非线性主导着控制系统   (Tenny,Rawlings和Wright,2004)。

那么如何将这两个段落与多个作者姓名(Gopi& vijay)与出版年份进行比较。

注意:在第一个参考部分中,所有具有年份信息的作者姓名的格式样式都是常量。

1 个答案:

答案 0 :(得分:2)

“比较”(在这些字符串之间)提供了三种可能的结果:

  • 第一个字符串比第二个字符串“更大”
  • 第一个字符串比第二个字符串“少”
  • 这两个字符串是“相同的”

“更大”,“更少”和“相同”的含义取决于比较函数。

你可能不想要“比较”。 “第二段小于第一段”甚至意味着什么? 您可能有兴趣了解文本中使用“计算机控制系统”的引用。 (如果正确引用了论文,应该做些微不足道的事情......)

如果这是你真正需要的,那么现在是时候弄清楚你作为一个人将如何处理这项任务。

我的第一种方法是采用参考字符串

string str = "Gopi, K.P., and Vijay, S. (1997) Computer Controlled Systems";

并查看其实际相关内容

string[] substrings = str.Split(new char[] { ' ', ',', '(', ')' });

引用这个“计算机控制系统”来源的段落很可能包含“Gopi和Vijay,1997”。

string toFind = substrings[0] + " and " + substrings[5] + ", " + substrings[9];

然后,我会在我最喜欢的文本查看器中打开文本并搜索“Gopi和Vijay,1997”。

string text = "It will cause numerical difficulty (Gopi and Vijay, 1997). What’s more, when the process constraints are activated, the significant deterioration of closed-loop control performance will be clearly witnessed as kind of nonlinearity is dominating the control system (Tenny, Rawlings, and Wright, 2004).";

int pos = text.IndexOf(toFind);

然后我会将比赛的位置和某个上下文存储在一起。

string match = "[...]" + text.Substring(Math.Max(pos - 50, 0), Math.Min(text.Length - pos, pos + toFind.Length + 50)) + "[...]";

然后,我会开始查看regex因为我会意识到可能有其他组合的“Gopi”,“Vijay”,“1997”以及可能在文本中使用的标点符号。 / p>