-2

我有一段包含作者姓名,如:

Gopi, KP 和 Vijay, S. (1997) 计算机控制系统:理论与设计,第三版,Mc Graw-Hill,ND Cliffs,IND。

和这样的另一段:

这将导致数值困难(Gopi 和 Vijay,1997)。更重要的是,当过程约束被激活时,闭环控制性能的显着恶化将清楚地看到,因为一种非线性在控制系统中占主导地位(Tenny、Rawlings 和 Wright,2004 年)。

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

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

4

1 回答 1

2

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

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

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

您可能不想要“比较”。“第二段小于第一段”是什么意思?您可能有兴趣找出文中引用“计算机控制系统”的位置。(如果论文被正确引用,这应该是微不足道的事情......)

如果这是您真正需要的,那么是时候弄清楚作为人类的您将如何处理此任务。

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

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

并查看其中实际相关的内容

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

引用此“计算机控制系统”来源的段落可能会在其中某处包含“Gopi and Vijay, 1997”。

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

然后,我会在我最喜欢的文本查看器中打开文本并搜索“Gopi and 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)) + "[...]";

然后,我会开始查看正则表达式,因为我会意识到文本中可能会使用“Gopi”、“Vijay”、“1997”和标点符号的其他组合。

于 2012-04-07T13:47:31.740 回答