2010-01-18 3 views
1

Мне нужно удалить соответствующую подстроку, если она найдена в строке 1, игнорируя пробелы и charcters like -.Удалить соответствующие подстроки игнорировать пробелы

пример у меня есть:

string 1="The LawyerWhat happened to A&O's first female partner?The LawyerWhen Clare Maurice was made up at Allen & Overy (A&O) in 1985 she was the sole female partner at the firm. Twenty-five years later, gradual change in the"; 

Мне нужно, чтобы соответствовать string2 ниже в строке 1 и удалить его из строки СПОСОБНОСТИ 1.

string 2="What happened to A&O's first female partner? - The Lawyer"; 

Большое спасибо

ответ

-1

Это должно сделать трюк:

1 = 1.Replace (2, string.Empty);

+0

Несколько вопросов здесь: '1' и' 2' недопустимые имена переменных. Кроме того, это не игнорирует «whitespaces и charcters like -». – RedFilter

+0

1 и 2 были использованы только как ярлыки. Извинения я пропустил это требование. – Andreas

1

Это, вероятно, не самый лучший способ сделать это, но:

// I renamed the strings to source and pattern because 1 and 2 wouldn't be very clear 
string result = Regex.Replace(source, Regex.Escape(pattern).Replace(" ", "[\s]*?")); 
// Google shows we have an option such as 
string result = Regex.Replace(source, Regex.Escape(pattern), RegexOptions.IgnoreWhiteSpace) 

;

Не уверен в игнорировании символа «-». Попробуйте «Regex Buddy», это безумно полезно для написания регулярных выражений. У него даже есть опция «Копировать шаблон как регулярное выражение C#».

+0

В обоих подходах отсутствует строка замены. В вашем первом подходе вам нужно сбежать из '\ s' правильно или использовать символ @, чтобы сделать его стенографической строкой. Второй подход не компилируется. Он ожидает, что третий параметр будет заменой. Опция 'RegexOptions.IgnorePatternWhitespace'. Даже с заменой строки '' '' они не будут совпадать, так как шаблон не является точным, и замена вернет исходную строку без изменений. –

2

Это, кажется, работает с вашим примером, но вы должны проверить его больше. Я предполагаю, что вы всегда ожидаете, что замена будет следовать той же схеме, где будут удалены лишние пробелы и символы «-».

// renamed your variables: 1 is "input", 2 is "replaceValue" 
string pattern = Regex.Replace(replaceValue.Replace("-", ""), @"\s{2,}", ""); 
pattern = Regex.Escape(pattern); 
string result = Regex.Replace(input, pattern, "");