Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
8 / 8 / 1
Регистрация: 18.04.2010
Сообщений: 74
1

Изъять подстроку из строки

12.07.2012, 14:08. Показов 2119. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Имеется строка к примеру: STR(MT1,10,0)+STR(Z,3,0) , или STR(MT1,10,0)+STR(Z,3,0)+STR(Zd,3,0) и т.д., любой длины.
Из этого надо получить строку вида MT1+Z, т.е. оставить только первую часть из скобок.
Т.к. значения в скобках могут быть разные, то надо удалять значения от "," до ")". Проблема как раз в реализации удаления от одного символа до другого включительно. Стандартные Copy, pos, delete не помогли.
Или может быть надо не приводить строку к нужному виду, а изъять из нее нужные данные... тоже пока не представляю как это сделать.
Подскажите как бы вы начали это делать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2012, 14:08
Ответы с готовыми решениями:

Ввести фамилию, имя и отчество в одну строковую переменную. Определить длину строки. Изъять все буквы ‘а’ ‘о’ из фамилии.
Ввести фамилию, имя и отчество в одну строковую переменную. Определить длину строки. Изъять все...

Удалить определённую подстроку из строки
Подскажите , как сделать,чтобы из строки удалить заданную подстроку, но расположение этой подстроки...

Правильный ли мой алгоритм вхождения строки в подстроку по уровню?
Есть строки состоящие из цифр и точек. Например 2 2.1 2.2 2.2.1 20 3 3.1 ......

как сделать что б каждую подстроку выводило с новой строки?
Дана строка символов C1, C2,…CM, в которой могут встречаться цифры, пробелы, буква "Е" и знаки "+",...

3
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
12.07.2012, 14:15 2
pos , copy delete вам в руки... Если не помогли значит неправильно делали... Покажите код
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.07.2012, 14:39 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var s,s1:string;
begin
s:='STR(MT1,10,0)+STR(Z,3,0)+STR(Zd,3,0)';
Edit1.Text:=s;
s1:='';
while pos('(',s)>0 do
 begin
  s1:=s1+copy(s,pos('(',s)+1,pos(',',s)-pos('(',s)-1)+'+';
  delete(s,1,pos(')',s));
 end;
s1[length(s1)]:=#0;
Edit2.Text:=s1;
end;
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
12.07.2012, 15:08 4
Лучший ответ Сообщение было отмечено как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var R: TRegExpr;
    S: String;
    OutPut: String;
    i: Integer;
begin
 
  R := TRegExpr.Create;
  R.Expression := '([(](.+?)[,])';
  for i := 0 to Memo1.Lines.Count - 1 do
    begin
      OutPut := '';
      S := Memo1.Lines[i];
      if R.Exec(S) then
      repeat
        OutPut := OutPut + R.Match[2] + '+';
      until not R.ExecNext;
 
      Delete(OutPut, Length(OutPut), Length(OutPut)-1);
      Memo2.Lines.Add(OutPut)
  end;
end;
через регулярное выражение сделал
в мемо1 записываем строки для разбиения, в мемо2 получаем результат
0
12.07.2012, 15:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2012, 15:08
Помогаю со студенческими работами здесь

Вывести подстроку, расположенную между первым и вторым пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстрочку, расположнную между...

Выделить из заданной строки подстроку, которая соответствует записи вещественного числа с плавающей точкой
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков "+" и "-". Выделить...

Изъять предложение из строки
Прошу помощи и объяснения как сделать это. Перевод задания на русский: Изъять из этой строки...

Как изъять часть строки?
Помогите. пожалуйста. осилить такую тему: Имеется такая строка ТУСТ-10-10 (цифры и буквы могут...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru