• Как Достать часть из строки в c#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Раз пошла такая пьянка, предложу вариант без регулярных выражений:
    // входящие данные
    string data = "0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 39 ..............09";
    // получаем позицию первой найденной точки
    int endIndex =  data.IndexOf(".");
    // получаем позицию первого вхождения символов 00
    // с конца строки начиная с endIndex
    int startIndex = data.LastIndexOf("00", endIndex) + 2; // + размер искомых символов
    		
    // выделяем часть строки и удаляем лишние пробелы по бокам
    string result = data.Substring(startIndex, endIndex - startIndex).Trim();
    		
    // выводим результат
    Console.WriteLine(result);
    
    // можно одной строкой написать, но так проще понять

    Посмотреть, как это работает, можно тут.

    Регулярные выражения имеет смысл использовать, если шаблон поиска и/или данные будут сложными. В рамках текущего вопроса, все вроде бы просто, можно без потенциально опасных регулярных выражений обойтись (прожорливость, зацикливание).

    Еще вот такой можно сделать вариант:
    string data = "0x00 00 00 00 00 00 00 00 00 00 00 00 00 3D 12 7E ..............01";
    string result = data.Replace("0x", "").Replace("00", "").TrimEnd("0123456789.".ToCharArray()).Trim();
    Console.WriteLine(result);

    Или:
    string data = "0x00 00 00 00 00 00 00 00 00 00 00 00 00 3D 12 7E ..............00";
    string result = data.Substring(2).TrimStart("0 ".ToCharArray()).TrimEnd("0123456789.".ToCharArray()).Trim();
    Console.WriteLine(result);
    Ответ написан
    7 комментариев
  • Как правильно задать уникальное поле в mongodb?

    Tark
    @Tark
    Pyramid'альный мир
    Уникальным поле будет после добавления индекса по нужному (-ым) ключу(-ам) с опцией {'unique': True}
    Ответ написан
    2 комментария
  • Как правильнее организовать синхронизацию баз на PHP+Apc+Mongo?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Я правильно понимаю, вы пытаетесь использовать БД как кэш?
    Если вам нужен именно кэш - почему вы удивляетесь, что данные теряются? Это вполне нормальная ситуация, я бы рекомендовал посмотреть в сторону memcached/redis, apc все же лучше для хранения опкодов.

    Если же вам нужна БД - либо шардируйте, либо проводите оптимизации хранимых данных, либо прокачивайте кэш до уровня "на чтение бд вообще не трогается".

    Под задачу синхронизации не плохо подходит решение:
    1. Есть очередь (либо список) под rabbitmq, или любым другим менеджером очередей.
    2. При любом изменении данных в БД - в очередь записывается сообщение об этом.
    3. На зависимых серверах в постоянном прослушивании находятся обработчики, которые выполняют действия, записанные в сообщениях из очередей.
    Ответ написан
    Комментировать
  • Что не так делаю при получении xml serializer C#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Для представленного XML, классы будут примерно такими:
    [Serializable]
    [XmlRoot("ValCurs")]
    public class ValCurs
    {
    
      [XmlAttribute("Date")]
      public string Date { get; set; }
    
      [XmlAttribute("name")]
      public string Name { get; set; }
    
      [XmlElement("Valute")]
      public Valute[] Items { get; set; }
    
    }
    
    [Serializable]
    public class Valute
    {
    
      [XmlAttribute("ID")]
      public string Id { get; set; }
      public string NumCode { get; set; }
      public string CharCode { get; set; }
      public string Name { get; set; }
      public string Nominal { get; set; }
      public string Value { get; set; }
    
    }

    Посмотреть пример работы этого кода в .NET Fiddle.
    Ответ написан
    Комментировать