2012-04-07 3 views
-2

У меня есть пункт, который содержит имя автора, как:Как сравнить две строки с условиями?

Гопи, КП, и Виджай, S. (1997) с компьютерным управлением системы: теория и дизайн, Третье издание, Mc Грау-Хилл, Н.Д. скалы, IND.

и другой пункт, как это:

Это вызовет числовая сложности (гопи и Виджай, 1997). Что больше , когда активируются ограничения процесса, существенное ухудшение характеристик управления с обратной связью будет , поскольку в системе управления доминирует нелинейность (Tenny, Rawlings, and Wright, 2004).

Итак, как сравнить эти два абзаца с множественным именем автора (Gopi & vijay) с годом публикации.

Примечание: В первой справочной части формат форматирования имени автора с информацией о годе постоянный.

+0

[Что вы пытались?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+2

'Как сравнить эти две строки?', Что вы хотите как возвращаемое значение? –

+0

Я разделил два абзаца на streamsplitter, и я использую такие условия, как каждое имя автора, заканчивающееся запятой, и информация о Годе закончилась с полной остановкой аналогично, но я изо всех сил старался разделить строку на две строки. Как оба условия (имя автора и информация года) должны содержать одно условие? – DeeGo

ответ

2

А «Сравнить» (между этими строками) обеспечивает три возможных результата:

  • первая строка «больше», чем второй
  • первая строка «меньше», чем вторая
  • две строки являются «идентичными»

Значение функции «больше», «меньше» и «идентично» зависит от функции сравнения.

Возможно, вы не хотите «сравнивать». Что означает «второй абзац меньше, чем первый», даже означает? Возможно, вам интересно узнать, где в тексте используется ссылка на «Computer Controlled Systems». (Что-то, что должно быть тривиально делать, если бумага была правильно указана ...)

Если это то, что вам действительно нужно, тогда пришло время выяснить, как бы вы, как человек, справились с этой задачей.

Мой первый подход будет взять ссылки длиной

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

и посмотреть, что на самом деле актуальна в этом

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

Абзац ссылается этот источник «Computer Controlled Systems» будет, скорее всего, содержат «Гопи и Виджай, 1997» где-то в нем.

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

Тогда, я бы открыть текст в моем любимом текстовом редакторе и поиск «Гопи и Виджай, 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, потому что я понимаю, что могут быть и другие комбинации «гопи», «Виджай», «1997» и знаки препинания, которые могут быть использованы в тексте.