2013-12-17 4 views
1

Я хочу разбить строку на 2 массива, один с текстом, разделенным на vbTab (я думаю, что это \t в C#), а другая строка с тестом, разделенным vbtab (Я думаю, что это \n в C#).разделить строку на 2 массива на основе 2 разделителей

При поиске я нашел (StackOverFlow Question: 1254577):

string input = "abc][rfd][5][,][."; 
string[] parts1 = input.Split(new string[] { "][" }, StringSplitOptions.None); 
string[] parts2 = Regex.Split(input, @"\]\["); 

но моя строка будет что-то вроде этого:

aaa\tbbb\tccc\tddd\teee\nAccount\tType\tCurrency\tBalance\t123,456.78\nDate\tDetails\tAmount\n03NOV13\tTransfer\t9,999,999.00-\n02NOV13\t\Cheque\t125.00\nDebit Card Cash\t200.00 

так в коде выше вход становится:

string input = "aa\tbbb\tccc\tddd\teee\nAccount\tType\tPersonal Current Account\tCurrency\tGBP\tBalance\t123,456.78\nDate\tDetails\tAmount\n03NOV13\tTransfer\t9,999,999.00-\n02NOV13\t\Cheque\t125.00\nDebit Card Cash\t200.00\n30OCT13\tLoan Repayment\t1,234.56-\n\tType\t30-Day Notice Savings Account\tCurrency\tGBP\tBalance\t983,456.78\nDate\tDetails\tAmount\n03NOV13\tRepaid\t\250\n" 

но как создать один массив строк w ith everthing до первого newline и еще один массив, который содержит все после?

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

Я хочу, чтобы быть в состоянии взять исходную строку и производить что-то вроде этого на бумаге формата А5: enter image description here

+0

Не мог бы Вы exepected элементов массивов, то пожалуйста? –

ответ

0

Вы можете использовать запрос LINQ:

 var cells = from row in input.Split('\n') 
        select row.Split('\t'); 

Вы можете получить только первую строку, используя First() и остальные строки с помощью Skip(). Например:

 foreach (string s in cells.First()) 
     { 
      Console.WriteLine("First: " + s); 
     } 

Или

 foreach (string[] row in cells.Skip(1)) 
     { 
      Console.WriteLine(String.Join(",", row)); 
     } 
1

ниже код должен делать то, что вы просили. Это привело к part1 с 5 записей и part2, имеющие 26 записей

string input = "aa\tbbb\tccc\tddd\teee\nAccount\tType\tPersonal Current Account\tCurrency\tGBP\tBalance\t123,456.78\nDate\tDetails\tAmount\n03NOV13\tTransfer\t9,999,999.00-\n02NOV13\t\Cheque\t125.00\nDebit Card Cash\t200.00\n30OCT13\tLoan Repayment\t1,234.56-\n\tType\t30-Day Notice Savings Account\tCurrency\tGBP\tBalance\t983,456.78\nDate\tDetails\tAmount\n03NOV13\tRepaid\t\250\n"; 

// Substring starting at 0 and ending where the first newline begins 
string input1 = input.Substring(0, input.IndexOf(@"\n")); 

/* Substring starting where the first newline begins 
    plus the length of the new line to the end */ 
string input2 = input.Substring(input.IndexOf(@"\n") + 2); 

string[] part1 = Regex.Split(input1, @"\\t"); 
string[] part2 = Regex.Split(input2, @"\\t"); 
Смежные вопросы