2014-10-13 2 views
0

Я пытаюсь так:Найти определенную строку в строку массива

int Quantity = Array.FindIndex(lineValues, x => x.Equals("Order 1 QTY")); 

Он проходящее на ту же строку. Но я хочу, чтобы он прошел, даже если между строкой нет пробелов.

Я хочу, чтобы получить прошло с обеих строки:

"Заказ 1 КОЛ"
"Order1QTY"

Я хочу проверить только строки, за исключением пробелов.

+2

Возможно, с помощью [Регулярные выражения] (http://stackoverflow.com/questions/18701992/regex-space-or-no-space)? –

+0

Возможный дубликат [сравнение строк в C#, игнорирование пробелов, возврат каретки или разрывы строк] (http://stackoverflow.com/questions/4718965/c-sharp-string-comparison-ignoring-spaces-carriage-return-or-line- breaks) –

+0

Затем вам придется буферизировать String в другой переменной tmp, удалить пробелы, а затем снова искать с шаблоном поиска также без пробелов. – icbytes

ответ

3

Один подход должен был бы использовать регулярное выражение:

var regex = string.Format("Order\s*{0}\s*QTY", 1); 
int Quantity = Array.FindIndex(lineValues, x => Regex.Matches(x, regex)); 

регулярное выражение, которое я бы использовал бы что-то вроде этого:

Order\s*1\s*QTY 

Regular expression visualization

Debuggex Demo

+0

+1 Я думаю, это достойное решение. –

3

Вы можете сделать:

string y = "Order 1 QTY"; 
int Quantity = Array.FindIndex(lineValues, x => x.Equals(y) || x.Equals(y.Replace(" ",""))); 
+0

Возможно, он также имел в виду все перестановки «нуля или одного пробела»? –

+0

@PatrickHofman, почему бы вам предположить, что индекс будет отключен? –

+0

Мне просто нужен символ строки, исключая пробелы между ними. – user3913587

0

В качестве альтернативы удалите все пробелы из тестовой строки, а затем сравните их с «Order1Qty».

int Quantity = Array.FindIndex(lineValues, 
    x => x.Replace(" ", "").Equals("Order1QTY")); 
Смежные вопросы