powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как заменить последовательность символов на один сивол в строке?
4 сообщений из 4, страница 1 из 1
Как заменить последовательность символов на один сивол в строке?
    #38944857
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть строка на что-то типа 1 x y + r * AND 0 AND--мне надо ее
заменить так что бы вместо х y были цыфры типа 4 3.
Это мне понятно меняю в цыкле for:
Код: plaintext
1.
2.
3.
if stroka[i]==x {stroka1[i]=3}
else if stroka[i]==y {stroka1[i]=2}
else {stroka1[i]=stroka[i]}.


Но мне также надо заменить
AND заменить на значок &:
Как это правильно сделать чтобы при каждой смене
длина получающейся строке была на два символа меньше (имея ввиду что 3 символа здесь меняются на 1) -- в том числе надо оставлять пробелы между символами.
Код: plaintext
1.
2.
3.
4.
if (stroka1[j]=A && stroka1[j+1]=B && stroka1[j+2]=D) {stroka2[j]=&;
for (k=j+1; stroka1[k]!="\0"; k++)
 stroka2[j+1]=stroka1[k+2]}
else {stroka2[i]=stroka1[i]} 

-- но там AND встречается трижды--что сделать в этом случае. Наверное надо применять рекурсию--
Да и ньансы с выделеением памяти есть, хотя может если испольовать стринг в С++ это не важно.
Кроме того по-моему лутше использовать два невложеных цыкла for -- для замены букв и замены оператора AND.
...
Рейтинг: 0 / 0
Как заменить последовательность символов на один сивол в строке?
    #38944859
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых, открой орфографический словарь: цИфры, цИклы. Тебя читать неприятно.

Во вторых, реши на каком языке ты пишешь. Если тебя устраивает класс string в C++, то используй его и не мучайся.
...
Рейтинг: 0 / 0
Как заменить последовательность символов на один сивол в строке?
    #38944864
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В один проход все делается. Используй второй индекс, куда писать, например j
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i=0;
j=0;
while(stroka[i] != 0) {
  if (stroka[i]==x) {stroka1[j]=3; i++;j++}
  else if (stroka1[i]=A && stroka[i+1]=B && stroka[i+2]=D) {stroka[j]=&;i+=3;j++}
  else {stroka[j]=stroka[i]; i++;j++}
}
stroka[j] = 0;


Не будет работать если надо менять на что-то более длинное, например 0 на NULL
...
Рейтинг: 0 / 0
Как заменить последовательность символов на один сивол в строке?
    #38945112
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Сам и нашел: как раз и с стрингом очень хорошо работает. Строки как раз сами сокрашаются при удаление символов.
Код: plaintext
1.
2.
3.
for (int i=0; i<exp.length(); i++)
{if (exp[i]=='A')exp.replace(i,3,"&");--замена например And на один символ (&)
if (exp[i]=='Z')exp.replace(i,1,"7");--замена одного символа на другой (буквы на цифру)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как заменить последовательность символов на один сивол в строке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]