Как разбить строку на подстроки используя Regex - C#
Формулировка задачи:
При работе над одним модулем, возникла проблема такого рода:
получаю Json строку такого вида { ts: 196851352, updates: [ [ 9, -835293, 1 ], [ 9, -23498, 1 ] ] }
Мне необходимо из секции updates получить секции , вернее контент содержащийся в них, то есть
занчения: 9, -835293, 1 ; 9, -23498, 1
Может кто кинет снипет который делает это на Regex-e. Можете рассматривать строку как
[ [ 9, -835293, 1 ], [ 9, -23498, 1 ] ].
пытался таким образом , но не вышло))
Regex oRegex = new Regex(@"(?<data>[\w*|\d+])");
MatchCollection oMatchCollection = oRegex.Matches(upd);
List<string> list = new List<string>();
foreach (Match oMatch in oMatchCollection)
{
list.Add(oMatch.Groups["data"].Value);
}Решение задачи: «Как разбить строку на подстроки используя Regex»
textual
Листинг программы
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
namespace ConsoleApplicationTest {
public static class Program {
private static void Main() {
// Исходные данные
string data = @"{ ts: 196851352, updates: [ [ 9, -835293, 1 ], [ 9, -23498, 1 ] ] }";
// Добавляем кавычки, ибо исходные данные не корректны
data = data.Replace( "updates", @"""updates""" ).Replace( "ts", @"""ts""" );
// Сериализатор Json
DataContractJsonSerializer serializer = new DataContractJsonSerializer( typeof ( MyClass ) );
// Десериализуем данные
MyClass results;
var byteArray = Encoding.ASCII.GetBytes( data );
using ( MemoryStream memoryStream = new MemoryStream( byteArray ) ) {
results = serializer.ReadObject( memoryStream ) as MyClass;
}
// Ввыводим результат
Console.WriteLine( results.Ts );
Console.WriteLine( string.Join( "; ", results.Updates[ 0 ] ) );
Console.WriteLine( string.Join( "; ", results.Updates[ 1 ] ) );
Console.ReadKey();
}
}
[DataContract]
class MyClass {
[DataMember( Name = "ts" )] public int Ts;
[DataMember( Name = "updates" )] public int[][] Updates;
}
}