FaisalM
FaisalM

Reputation: 756

C# Split string using regex expression

Input: String input = "{True,True,False},{False,True,True},{False,True,True}"

Expected output: String[] output = new String[]("True,True,False", "False,True,True", "False,True,True");

I am trying to use Regex.Split, but unsuccessful with the pattern. Any hints?

Upvotes: 0

Views: 146

Answers (4)

tmaj
tmaj

Reputation: 34987

Here is my version:

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);
    }
}

Output

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

Upvotes: 4

ABlue
ABlue

Reputation: 673

You can use:

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);
}

Your output :

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

Upvotes: 0

Prasad Telkikar
Prasad Telkikar

Reputation: 16049

You can trim first and last { } using .TrimStart() and .TrimEnd() respectively and then apply RegEx with below pattern

    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));

Output

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

.Net Fiddle

Upvotes: 0

Michał Turczyn
Michał Turczyn

Reputation: 37367

You could try:

var result = input
  // Remove sorrounding { and }     
  .Trim(new char[] { '{', '}' })
  // Split by "},{"
  .Split(new string[] { "},{" }, StringSplitOptions.RemoveEmptyEntries);

Upvotes: 3

Related Questions