Reputation: 756
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
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
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
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
Upvotes: 0
Reputation: 37367
You could try:
var result = input
// Remove sorrounding { and }
.Trim(new char[] { '{', '}' })
// Split by "},{"
.Split(new string[] { "},{" }, StringSplitOptions.RemoveEmptyEntries);
Upvotes: 3