Разделение строки на основе нескольких разделителей char
У меня есть строка "4,6,8\n9,4"
Я хочу разбить это на основе и \n
Выходной массив должен быть
4
6
8
9
4
Изменить:
Теперь я читаю строку из консоли, когда я ввожу строку, как указано выше, в консоль, в коде, который я получаю как "4,6,8\\n9,4"
. Теперь, когда я хочу разделить с помощью "," and "\\n"
. Как я могу изменить выражение?
Ответы
Ответ 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(',')?