BigAp.ru — интернет-магазин электроники и бытовой техники

Автор Тема: Вырезать из строки часть находящуюся между двумя одинаковыми символами  (Прочитано 1210 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8203
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Привет, стоит задача вырезать из этой строки
/my:myFields/my:gService/my:gEnum/my:gRTCompanies

слово my:gEnum и вставить в другую строку или переменную, все строки разные и заранее неизвестно что будет написано в этих строках, единственно заведомо известно что требуемое слово будет находиться между минус 2 и минус 1 символом / от конца строки.

Буду раз любым вариантам, реализованным любыми тетодами, будт то регулярное выражение или код на C# или чем либо еще...
дорогу осилит идущий...
......................
MCP, MCTS, RHCSA
......................
also aka xck...

 

Оффлайн NiX

  • IS Group
  • сисадми́н
  • *
  • Сообщений: 605
  • Karma: +39/-0
  • Пол: Мужской
    • Share Post
не понятно что-то my:gEnum является динамическим значением или статичным? Есть динамичные данные в тонне тексте?

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8203
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
срока приведена в качестве примера, по факту все строки разные (разная длина, разный текст), задача такая - вырезать "предпоследнее" значение перед знаком "/" у любой, какой бы то ни было строки...

как пример, у этой строки вырезаем my:gEnum:
/my:myFields/my:gService/my:gEnum/my:gRTCompanies

у этой надо вырезать my:gInitiatorAddData:
/my:myFields/my:gInitiator/my:gInitiatorAddData/my:txtInitiatorManager

у этой my:gSIMType:
/my:myFields/my:gConnectionType/my:gSIMType/my:txtEvent

и т.д.
« Последнее редактирование: Май 06, 2015, 04:12:05 pm от sysadmin »

Оффлайн around

  • Сообщество ИТ-Специалистов
  • Специалист ИТ
  • ****
  • Сообщений: 413
  • Karma: +34/-0
  • Пол: Мужской
  • Ломаем Cisco, Huawei, QTech. Быстро, качественно!
    • Share Post
    • Сайт Кругликова
roubles in Windows - reboot, troubles in *nix - be root.

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8203
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Надо не удалить а вырезать текст и использовать вырезанный кусок дальше )

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8203
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Нашел решение немного нетривиально, распилил строку при помощи C#, итак есть строка:
str = "/my:myFields/my:gService/my:gEnum/my:gRTCompanies"
разбиваем его на аргументы по знаку "/" используя split:
string[] tokens = str.Split('/');
Далее наполняем лист:
List<string> ll = new List<string>(tokens);
Вычисляем количество элементов минус два:
int llcount = ll.Count;
int lc = llcount - 2;
Удаляем лишнее переберирая лист:
for (int i = 0; i < lc; i++)
            {
                ll.RemoveAt(0);
            }

Далее сформировать строку из последних двух элементов, можно использовов join:
string strllresult = string.Join(symbol, ll);

В итоге получаем код в "пару" строк:
public string cutString(string str, string symbol)
        {
            string[] tokens = str.Split('/');

            List<string> ll = new List<string>(tokens);

            int llcount = ll.Count;
            int lc = llcount - 2;

            for (int i = 0; i < lc; i++)
            {
                ll.RemoveAt(0);
            }

Процедурку используем так:
cutString("/my:myFields/my:gService/my:gEnum/my:gRTCompanies", "/");

В результате получаем:
my:gEnum/my:gRTCompanies
« Последнее редактирование: Май 12, 2015, 09:25:22 am от sysadmin »


xx
Получение куска строки между известными символами

Автор sysadmin

0 Ответов
1631 Просмотров
Последний ответ Май 14, 2013, 04:17:05 pm
от sysadmin
xx
Настройка DNS между двумя доменами

Автор Ivan_47

13 Ответов
2112 Просмотров
Последний ответ Май 14, 2015, 04:29:25 pm
от satelinks
xx
Linux - найти файлы между двумя датами

Автор sysadmin

0 Ответов
152 Просмотров
Последний ответ Октябрь 07, 2016, 03:35:18 pm
от sysadmin
xx
Запрет доступа к документам между двумя рабочими групами

Автор master

10 Ответов
3788 Просмотров
Последний ответ Май 08, 2012, 09:52:25 pm
от od1ssey