Разбить строку на String Array в c # - PullRequest
0 голосов
/ 24 сентября 2018

Как мне разбить строку на строковый массив.

Моя строка выглядит следующим образом

string orgString = "1234-|@$@|-George,Michael -$@%@$-65489-|@$@|-Lawrence,  Steve J  -$@%@$-7897954-|@$@|-Oliver Mike  -$@%@$-56465-|@$@|-Waldimir Tursoky";

Теперь я хочу, чтобы мой строковый массив сохранял имя и номер вместе с -|@$@|-

Я попробовал следующий код

string[] strArray = orgString.Split(new string[] {"-$@%@$-"}, StringSplitOptions.RemoveEmptyEntries);

Мой вывод выглядит следующим образом:

"1234-|@$@|-George,Michael "

Но мой желаемый вывод (имя сначала, номер последний)

"George,Michael -|@$@|-1234"

Как мне добиться этого в C #?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете снова разделить и затем рекомбинировать

string outerDivider = "-$@%@$-";
string innerDivider = "-|@$@|-";

var results = orgString
    // Split by outer divider
    .Split(new string[] { outerDivider }, StringSplitOptions.RemoveEmptyEntries)
    // Then for each of the results, split again on the inner divider
    .Select(x => x.Split(new string[] { innerDivider }, StringSplitOptions.RemoveEmptyEntries))
    // Swap the order of elements around the inner divider and recombine into a string
    .Select(x => string.Join(innerDivider, x[1], x[0]));
0 голосов
/ 24 сентября 2018

Просто поменяйте местами в полученной строке:

string orgString = "1234-|@$@|-George,Michael -$@%@$-65489-|@$@|-Lawrence,  Steve J  -$@%@$-7897954-|@$@|-Oliver Mike  -$@%@$-56465-|@$@|-Waldimir Tursoky";
string[] resultingList = orgString.Split(new string[] {"-$@%@$-"}, StringSplitOptions.RemoveEmptyEntries).Select(x=>x.Split(new string[] {"-|@$@|-"}, StringSplitOptions.RemoveEmptyEntries).Aggregate((x11,y)=>{return y+" -|@$@|- "+x11;})).ToArray();
foreach(string result in resultingList)
{
    Console.WriteLine(result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...