Как разбить строку на подстроки используя 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;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы