Подтвердить что ты не робот

Разделение строки на основе нескольких разделителей char

У меня есть строка "4,6,8\n9,4"

Я хочу разбить это на основе и \n

Выходной массив должен быть

4
6
8
9
4

Изменить:

Теперь я читаю строку из консоли, когда я ввожу строку, как указано выше, в консоль, в коде, который я получаю как "4,6,8\\n9,4". Теперь, когда я хочу разделить с помощью "," and "\\n". Как я могу изменить выражение?

4b9b3361

Ответ 1

Используйте string.Split(char [])

string strings = "4,6,8\n9,4";
string [] split = strings .Split(new Char [] {',' , '\n' });

ИЗМЕНИТЬ

Попробуйте выполнить, если вы получите ненужные пустые элементы. String.Split Method (String [], StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
                                 StringSplitOptions.RemoveEmptyEntries);

EDIT2

Это работает для вашего обновленного вопроса. Добавьте все необходимые разделительные символы в char [].

string [] split = strings.Split(new Char[] { ',', '\\', '\n' },
                                 StringSplitOptions.RemoveEmptyEntries);

Ответ 2

var s = "4,6,8\n9,4";
var split = s.Split(new char[]{',', '\n'});

Но это должно быть обман...

EDIT: адресация комментария.

Этот код:

static void Main(string[] args)
{
    var s = "4,6,8\n9,4";

    foreach (var a in s.Split(new char[] { ',', '\n' }))
        System.Diagnostics.Debug.WriteLine(a);
}

Выводит следующее:

4
6
8
9
4

EDIT: чтение ввода с консоли отличается. \n отличается при вводе вручную.

static void Main(string[] args)
{
    var s = "4,6,8\\n9,4";

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries))
        System.Diagnostics.Debug.WriteLine(a);
}

Ответ 3

Другой вариант - использовать Regex.Split. Это полезно, когда сплит-последовательности более сложны. Например, если пробелы также могут быть частью разделительных разделителей, таких как:

"4,6,8 , 9\\n\\n4"

Тогда:

using System.Text.RegularExpressions;
var i = "4,6,8 , 9\n\n4";
var o = Regex.Split(i, @"[,\s\n]+");
// now o is:
// new string[] { "4", "6", "8", "9" }

Обратите внимание, что используемое регулярное выражение является "более принятым" - оно игнорирует пустое "пространство" между \n, и оно будет принимать "4 6 8 9 4" одинаково - поэтому выше, чтобы показать точку: существует более одного способа кошки кошки.

Счастливое кодирование.

Ответ 4

string tosplit = "4,6,8\n9,4";
var split = tosplit.Split(new Char [] {',', '\n' });

На всякий случай, если вы не печатаете/не видите его правильно:

split.ToList().ForEach(Console.WriteLine);

Ответ 5

Можете ли вы сделать string.Replace('\n', ','), за которым следует string.split(',')?