Добавить массивы и списки - PullRequest
0 голосов
/ 28 февраля 2019

Например, если введенный ввод:

1 2 3 |4 5 6 | 7 8

, мы должны манипулировать им до

1 2 3|4 5 6|7 8

Другой пример:

7 | 4 5|1 0| 2 5 |3

мы должны манипулироватьэто

7|4 5|1 0|2 5|3

Это моя идея, потому что я хочу обменять некоторые из подмассивов (7; 4 5; 1 0; 2 5; 3).

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

static void Main(string[] args)
{
    List<string> arrays = Console.ReadLine()
        .Split(' ', StringSplitOptions.RemoveEmptyEntries)
        .ToList();

    foreach (var element in arrays)
    {
        Console.WriteLine("element: " + element);
    }
}

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Это можно сделать с помощью простого регулярного выражения:

var result = Regex.Replace(input, @"\s?\|\s?", "|");

Это будет соответствовать любому (необязательному) символу пробела, за которым следует символ |, за которым следует (необязательный) символ пробелаи замените его одним | символом.

В качестве альтернативы, если вам нужно потенциально убрать несколько пробелов вокруг |, замените квантификаторы нуля или единицы (?) нулямиили более квантификаторы (*):

var result = Regex.Replace(input, @"\s*\|\s*", "|");

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

var result = Regex.Replace(input, @"\s*([\s|])\s*", "$1")

Это будет соответствовать любому появлению нуля или более символов пробела, сопровождаемых или символом пробела или символом | (захваченным в группе 1), сопровождаемым нулем или больше символов пробела и заменяющим егос тем, что было захвачено в группу 1.

0 голосов
/ 28 февраля 2019

Вам нужно разделить ваш ввод на "|"сначала а потом по космосу.После этого вы можете собрать свой ввод с помощью string.Join.Попробуйте этот код:

var input = "1 2 3 |4 5 6 | 7 8";
var result = string.Join("|", input.Split('|')
  .Select(part => string.Join(" ", 
    part.Trim().Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries))));

// now result is "1 2 3|4 5 6|7 8"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...