Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 21.03.2018
Сообщений: 24

Вырезать фрагмент строки

26.10.2018, 10:55. Показов 5158. Ответов 10

Студворк — интернет-сервис помощи студентам
Есть строка:
C#
1
string u = "status\":0,\"data\":\"{\\\"somekey1\\\":428129,\\\"asdddd\\\":\\\"491\\\",\\\"objectID\\\":3,\\\"countItems\\\":1,\\\"opstatus\\\":0,\\\"query\\\":{\\\"data\\\":[{\\\"objects\\\":{\\\"items\\\":[{\\\"attributes\\\":{\\\"type\\\":\\\"PROFILE\\\",\\\"subtype\\\":\\\"sdfsdfsd\\\",\\\"sss\\\":\\\"ddb\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"id\\\",\\\"value\\\":\\\"629636186\\\",\\\"view\\\":false}],\\\"objects\\\":{\\\"items\\\":[{\\\"attributes\\\":{\\\"type\\\":\\\"PHONE\\\",\\\"hashid\\\":\\\"ashhdasds\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"number\\\",\\\"value\\\":\\\"79613420709\\\",\\\"title\\\":\\\"Номер\\\"}]},{\\\"attributes\\\":{\\\"type\\\":\\\"PERSON\\\",\\\"hashid\\\":\\\"870ea1b3fbad7a66519d7db0f7706cb6\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"name\\\",\\\"value\\\":\\\"sommmm\\\",\\\"title\\\":\\\"Имя\\\"},{\\\"name\\\":\\\"surname\\\",\\\"value\\\":\\\"Imsss\\\",\\\"title\\\":\\\"Фамилия\\\"}]}]}}]}}],\\\"params\\\":{\\\"phone\\\":{\\\"properties\\\":{\\\"number\\\":[\\\"79613420709\\\"]}}}},\\\"fromCache\\\":false,\\\"find_old\\\":[],\\\"sourceName\\\":\\\"Telegram(тест)\\\",\\\"date_created\\\":\\\"2018-10-12 11:39:43.309652\\\",\\\"id\\\":83842020}\"}"
такое у нее содержание в редакторе, если ее сохранить в .txt, то все \\\ заменяются на \.

Задача написать регулярку для выделения фрагментов текста, я использовал это:
C#
1
2
3
4
5
        string regular(string start, string stop, string value)
            {
            var ssid = new Regex(start + "(?<="+ start + ")(.*?)(?="+ stop + ")");
            return ssid.Match(value).Groups[1].Value;
        }
вызов:
C#
1
2
3
start = "\\\"name\\\":\\\"surname\\\",\\\"value\\\":\\\"";
stop = "\\\",\\\"title\\\":\\\"Фамилия\\\"";
string fam = regular(start, stop, info);
В результате возвращается пустой ответ, при этом не важно какие строки я подаю в качестве параметров с ///" или /"
Подскажите какие данные надо подавать
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2018, 10:55
Ответы с готовыми решениями:

Вырезать подстроку из строки
Здравствуйте! Подскажите как вырезать подстроку зная с чего начинается и сколько символов до конца

Вырезать из строки символы
Здравствуйте. Передо мной стоит задача вырезать из строки символы. Например: Исходная строка: \\CSV\Serial\Lie.to.me\Seasson1 Нужно...

Вырезать подстроку строки
Всем доброго времени суток! Возник вопрос...необходимо написать программу создав свою собственную функцию. Условие - &quot;Написать...

10
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
26.10.2018, 12:02
nimistren, пользуйтесь такой формой записи:
C#
1
var u = @"12345";
А сейчас ваш код невозможно читать.

Добавлено через 10 минут
Там текст оказался вообще нечитаемым в студии )) Круто заэкранирован.

Добавлено через 8 минут
nimistren, насколько понимаю, там надо разэкранировать и получить сначала нормальный JSON.
И нормально закачать данные.
а сейчас многосимвольные кавычки явно мешаются.
0
0 / 0 / 0
Регистрация: 21.03.2018
Сообщений: 24
26.10.2018, 12:33  [ТС]
Извиняюсь, это из-за ссылки ...
Для примера хватит и такого куска:
C#
1
string u = "status\":0,\"data\":\"{\\\"somekey1\\\":428129,\\\"asdddd\\\":\\\"491\\\"";
например из этой строки нужно выделить все что находится между
C#
1
\\\"somekey1\\\":
и
C#
1
,\\\"asdddd\\\"
(428129)
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
26.10.2018, 13:02
Лучший ответ Сообщение было отмечено nimistren как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Text.RegularExpressions;
 
namespace Question2340452
{
    class Program
    {
        static void Main(string[] args)
        {
 
            var u = "status\":0,\"data\":\"{\\\"somekey1\\\":428129,\\\"asdddd\\\":\\\"491\\\",\\\"objectID\\\":3,\\\"countItems\\\":1,\\\"opstatus\\\":0,\\\"query\\\":{\\\"data\\\":[{\\\"objects\\\":{\\\"items\\\":[{\\\"attributes\\\":{\\\"type\\\":\\\"PROFILE\\\",\\\"subtype\\\":\\\"sdfsdfsd\\\",\\\"sss\\\":\\\"ddb\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"id\\\",\\\"value\\\":\\\"629636186\\\",\\\"view\\\":false}],\\\"objects\\\":{\\\"items\\\":[{\\\"attributes\\\":{\\\"type\\\":\\\"PHONE\\\",\\\"hashid\\\":\\\"ashhdasds\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"number\\\",\\\"value\\\":\\\"79613420709\\\",\\\"title\\\":\\\"Номер\\\"}]},{\\\"attributes\\\":{\\\"type\\\":\\\"PERSON\\\",\\\"hashid\\\":\\\"870ea1b3fbad7a66519d7db0f7706cb6\\\",\\\"is_favorite\\\":false},\\\"properties\\\":[{\\\"name\\\":\\\"name\\\",\\\"value\\\":\\\"sommmm\\\",\\\"title\\\":\\\"Имя\\\"},{\\\"name\\\":\\\"surname\\\",\\\"value\\\":\\\"Imsss\\\",\\\"title\\\":\\\"Фамилия\\\"}]}]}}]}}],\\\"params\\\":{\\\"phone\\\":{\\\"properties\\\":{\\\"number\\\":[\\\"79613420709\\\"]}}}},\\\"fromCache\\\":false,\\\"find_old\\\":[],\\\"sourceName\\\":\\\"Telegram(тест)\\\",\\\"date_created\\\":\\\"2018-10-12 11:39:43.309652\\\",\\\"id\\\":83842020}\"}";
 
            var start = "\\\"somekey1\\\":";
            var end = ",\\\"asdddd\\\""; 
            Console.WriteLine(Regular(start, end, u));
            Console.ReadKey();
        }
 
        private static string Regular(string start, string end, string value)
        {
            var pattern = start.Replace(@"\", @"\\") + @"(.*?)" + end.Replace(@"\", @"\\");
            var match = Regex.Match(value, pattern, RegexOptions.IgnoreCase);
            return match.Groups[1].Value;
        }
    }
}
Это только для первого совпадения.
Если совпадений нет, вернет пустую строку.
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
19.05.2019, 23:32
amr-now, как по-Вашему такое возможно:



Код:

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
 
class Kata
{
  string str;
  public Kata (string str)
  {
    this.str = str;
  }
  
  public void Final () 
  {
    string hello = "Your str without its core: ";
    int length = str.Length;
    if ( length == 1 )
      Console.Write(hello + "is the same.");
    else  
    {
      int sub = length/2;
      
      if ( length % 2 == 0 ) {
        Console.Write(hello + str.Substring(sub - 1, sub ) );
      }
      
      else {
        str = str.Remove(0,3);
        str = str.Remove(1,3);
        Console.Write(hello + str );
      }
    }
  }
}
 
class Program {
 
  static void Main () {
 
    Console.Clear();
    
    Console.WriteLine("1st string: \"test\"");
    Kata obj = new Kata("test");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("2nd string: \"testing\"");
    obj = new Kata("testing");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("3rd string: \"middle\"");
    obj = new Kata("middle");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("4th string: \"A\"");
    obj = new Kata("A");
    obj.Final();
    
    Console.ReadKey();
    
 } 
 }


Спасибо.
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
20.05.2019, 22:53
Цитата Сообщение от number_118 Посмотреть сообщение
как по-Вашему такое возможно
Ok, второй параметр - это сколько символов вырезать.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
21.05.2019, 16:23
Цитата Сообщение от number_118 Посмотреть сообщение
как по-Вашему такое возможно
Цель данной мозголомки мне осталась недоступна.
Формально если прошагать - всё соответствует.
Описание сигнатуры каждого метода видно при наведении курсора мыши на вызов метода.
Плюс постоянно читаем справку docs.microsoft.com, если что-то непонятно осталось.

Если постоянно сравниваете с той же Java, то там любят использовать конечный недостигнутый индекс. Но то такое.
Бывает.
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
21.05.2019, 17:23
1)
Цитата Сообщение от amr-now Посмотреть сообщение
Цель данной мозголомки мне осталась недоступна.
Название: Screenshot_9.png
Просмотров: 45

Размер: 5.7 Кб

2)
Описание сигнатуры каждого метода видно при наведении курсора мыши на вызов метода.
У меня более хардкорные условия :



(разве что, если поставить ещё надстройку (к тем, что я ставил уже) )

3)
Цитата Сообщение от number_118 Посмотреть сообщение
str.Substring(sub - 1, sub )
То есть я думал, первый параметр - начальная позиция выреза; вторая - конечная позиция. А потом выяснил, что вторая - так же, как у Remove.

<hr>
P.S. Финальный код:

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
 
class Kata
{
  string str;
  public Kata (string str)
  {
    this.str = str;
  }
  
  public void Final () 
  {
    string hello = "The core of your str is: ";
    int length = str.Length;
    if ( length == 1 )
      Console.Write(hello + "the same.");
    else  
    {
      int sub = length/2;
      
      if ( length % 2 == 0 ) {
        Console.Write(hello + str.Substring(sub - 1, 2 ) );
      }
      
      else {
        str = str.Remove(0,sub);
        str = str.Remove(1,sub);
        Console.Write(hello + str );
      }
    }
  }
}
 
class Program {
 
  static void Main () {
 
    Console.Clear();
    
    Console.WriteLine("1st string: \"1\"");
    Kata obj = new Kata("1");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("2nd string: \"12\"");
    obj = new Kata("12");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("3rd string: \"123\"");
    obj = new Kata("123");
    obj.Final();
    Console.WriteLine();
    
    Console.WriteLine("4th string: \"1234\"");
    obj = new Kata("1234");
    obj.Final();
    
    Console.ReadKey();
    
 } 
 }


(выложил полностью готовое, не знаю, чего ради )
0
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
21.05.2019, 19:49
Цитата Сообщение от amr-now Посмотреть сообщение
Плюс постоянно читаем справку docs.microsoft.com
У них раньше была feature : наводишь и тебе перевод; вот тут (про readonly), к сожалению, нет этого...
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.05.2019, 13:55
number_118, так бы сразу и сообщили: "Нужна серединка строки одна-две буквы."
Только задача решается не длинной программой, а одной строкой.
1
6 / 6 / 1
Регистрация: 28.09.2018
Сообщений: 396
22.05.2019, 14:13
amr-now, да, смогу в любое время посмотреть другое решение на codewars
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2019, 14:13
Помогаю со студенческими работами здесь

Вырезать координаты из строки
Здравствуйте. Каким образом можно вырезать все координаты (2 числа между запятыми) в 2 переменные поочередно. ...

Вырезать из строки Html ссылку
Всем привет! Хочу попросить помощи. 1) Есть сайт. Как можно скопировать его содержимое в текстовую переменную? Чтобы потом работать как...

вырезать символ ' из строки
string v1 = ds.Tables.Rows.ToString(); v1 = v1.Trim(&quot;'&quot;.ToCharArray()); делаю так, а нечего не происходит ...

Вырезать нужный фрагмент из строки и заменить его в новую строку
Помогите решить такую проблему. Нужно из ссылки вырезать мне нужный фрагмент и вставить его в уже новую ссылку. Пример: из данной...

Вырезать нужный фрагмент из строки и вставить его в новую строку
Здравствуйте. Возникла такая задача: у нас есть ссылка на презентацию, например эта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru