C # Разделить строку с помощью выражения регулярного выражения - PullRequest
0 голосов
/ 21 октября 2019

Ввод : String input = "{True,True,False},{False,True,True},{False,True,True}"

Ожидаемый вывод : String[] output = new String[]("True,True,False", "False,True,True", "False,True,True");

Я пытаюсь использовать Regex.Split, но безуспешно сшаблон. Есть намеки?

Ответы [ 4 ]

4 голосов
/ 21 октября 2019

Вот моя версия:

using System;
using System.Linq;
using System.Text.RegularExpressions;

class Program
{
    public static void Main(string[] args)
    {
        String input = "{True,True,False},{False,True,True},{False,True,True}";

        var pattern = "{(.*?)}";
        var matches = Regex.Matches(input, pattern);

        var output2 = matches
                 .Select(m => m.Groups[1].ToString())
                 .ToList();

        foreach (var o in output2) Console.WriteLine(o);
    }
}

Вывод

True,True,False
False,True,True
False,True,True
3 голосов
/ 21 октября 2019

Вы можете попробовать:

var result = input
  // Remove sorrounding { and }     
  .Trim(new char[] { '{', '}' })
  // Split by "},{"
  .Split(new string[] { "},{" }, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 21 октября 2019

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

string input = "{True,True,False},{False,True,True},{False,True,True}";

var pattern = @"{([A-Za-z,].+?)}";
var yourArray = Regex.Matches(input, pattern);

var Result= yourArray 
         .Select(m => m.Groups[1].ToString())
         .ToList();

foreach(var r in Result) {
   Console.WriteLine(r);
}

Ваш вывод:

True,True,False
False,True,True
False,True,True
0 голосов
/ 21 октября 2019

Вы можете обрезать первый и последний { }, используя .TrimStart() и .TrimEnd() соответственно, а затем применить RegEx с шаблоном ниже

    string str = "{True,True,False},{False,True,True},{False,True,True}".TrimStart('{').TrimEnd('}');
    var result = Regex.Split(str, @"},{"); // result is an array of string.
    Console.WriteLine(string.Join(" ", result));

Выход

True,True,False False,True,True False,True,True

.Net Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...