Перейти к содержимому

Как заменить букву в строке с

  • автор:

Как заменить символы в строке?

Как заменить символы и регистр в строке?
Входная строка "Эта функция работает" Как она должна выглядеть после метода "этаФункцияРаботает".

Заменить символы в строке
Помогите написать программу задание: Дан текст. Некоторые фрагменты его выделены группами символов.

Определить количество и заменить символы в строке
Разработать программу, которая для заданной строки s: вставляет символ x после каждого вхождения.

Заменить в строке все прописные символы на строчные
День добрый. Начинающий шарпник я. Ребят вопрос: 1) из мэйна вызывать могу толькo класс?, метод и.

557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538

Лучший ответ

Сообщение было отмечено OrphusLord как решение

Решение

ЦитатаСообщение от OrphusLord Посмотреть сообщение

Замена символов в строке(C)

Она в ANSI C есть, значит везде должна быть. Функция ищет первое вхождение символа в строку и возвращает его адрес. Возвращает нулевой указатель, если символ не найден.
Кстати я упустил проверку нулевого указателя. Вот пример

char* ptr
char string[]=»Sample string»
char symbol1=’s’
char symbol2=’S’
ptr=strchr (string,symbol1)
if (ptr!=NULL) *ptr=symbol2 ; замена
else printf («Символ не найден») ; Нулевой указатель

ЗЫ Как сказал яндекс и
09 декабря 2007 года
25 / / 29.12.2006
Непойму как замена осущевтвляется да и ВС пишет просто «String»,
09 декабря 2007 года
1.0K / / 08.01.2007

. char str[] = «Hello World . «;
char c = ‘e’;
char *p;
int result;
printf( «String : %s\n», str );
printf( «Search char: %c\n», c );
p = strchr( str, c );
result = (int)(p — str + 1);
if ( p != NULL )
printf( «Result : first %c found at position %d\n»,
c, result );
else
printf( «Result : %c not found\n» );
*strchr( str, c ) = ‘a’;
printf( «New String : %s\n», str );

09 декабря 2007 года
25 / / 29.12.2006
Спвасибо большое, всё работает )
09 декабря 2007 года
25 / / 29.12.2006
Криво работает =\
допустим строка «бла-бла-бла» заменить «бла» на «хах» получается «блх-блх-блх» =\
09 декабря 2007 года
1.0K / / 08.01.2007
Из MSDN примерчик.

. char s[20];
strcpy_s( s, sizeof(s), «bla-bla-bla» );
strncpy( s, «xax», 3 ); // «xax-bla-bla»
printf(«First String : %s\n», s);
strncpy( s + 4, «xax», 3 ); // «xax-xax-bla»
printf(«New String : %s\n», s);
strncpy( s + 8, «xax», 3 ); //xax-xax-xax
printf( «Last String : %s\n», s );.

Надо вопросы точней формулировать.
10 декабря 2007 года
25 / / 29.12.2006
а если допустим мы не знаем какая строка, но там все «.» должны заменяться на «:» ?
10 декабря 2007 года
1.0K / / 08.01.2007
а если допустим мы не знаем какая строка, но там все «.» должны заменяться на «:» ?

. char str[] = «Hello.My name is Vasya.»; //объявление символьного массива
int i = 0;
printf(«First String : %s\n», str);
while (str != ‘\0’) // Цикл работает пока не признак конца строки
<
if (str==’.’) //Проверка на искомый символ
str =’:’;
++i;
>
printf(«New String : %s\n», str);.

10 декабря 2007 года
25 / / 29.12.2006
Спасибо. Скрипт работает, но он может заменить только 1 симво допустим, «. » не заменин на «. »
10 декабря 2007 года
1.0K / / 08.01.2007
Он заменяет не один символ,а все символы ‘.’ на символы ‘:’.Если у тебя будет строка
,то на выходе ты получишь строку «. . . «;
10 декабря 2007 года
1.0K / / 08.01.2007
Спасибо. Скрипт работает, но он может заменить только 1 симво допустим, «. » не заменин на «. »

А ты различаешь символ и строку ? 😉 Может вопрос надо было задать по-другому : Как вставить подстроку в строку ? Если вопрос такой ,то эта тема совсем недавно была в Студентах,да еще и в 2 вариантах.Тебе принципиально на С надо или может на С++ ?
Получается так : ты задаешь вопрос хочу сделать так . Сделали. Нет. не так,надо так,хорошо сделали по-другому.То же не то.Теперь хочу поменять все символы ‘.’ на ‘:’. Поменяли.Опять не то ? Так что нужно ? Сформулируй вопрос нормально.

10 декабря 2007 года
25 / / 29.12.2006

Вообщем я только начинающий в Си. Хочу сделать автоцензуру. Т.е. в блокнот пишим все слова (ну с этим я уже разобрался. ) думал есть как и ПХП замена строки (сори не правильно выразился), но тут почитал форумы и там сказали , что такой функции нету и сказали что её можно написать самому. Начал разбираться во всех функциях строк не нашел удаления/замену (ну вообщем синтаксис отличается от пхп) я написал в 1 посте, что нужно что-то подобное str_replace, не знал что столько заморочек будет.

char mes[] = «. . . «;
int i = 0;
nullpo_retr(-1, sd);
while (mes != ‘\0’) // Цикл работает пока не признак конца строки
<
if (mes==’. ‘) //Проверка на искомый символ
mes =’. ‘;
++i;
>
printf(«New String : %s\n», str);
return 0;

Конечное сообение «. . . » пользуюсь VS 2005 (C++)

Заменить слово (символ) в строке на другое слово (символ)

прошу подсказать т.к. на c++ пишу впервые и многого не знаю, а тут на примере готового кода разберусь, что не так делаю.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Ввести с клавиатуры слово и символ. Перевернуть введенное слово. Вставить символ в середину слова
Ввести с клавиатуры слово и символ. Перевернуть введенное слово. Вставить символ в середину слова.

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

Ввести с клавиатуры слово и символ. Заменить в слове последнюю букву «A» на символ
Ввести с клавиатуры слово и символ. Заменить в слове последнюю букву “A” на символ. Присоединить.

Найти слова на заданный символ и самое длинное слово на этот же символ
вот пример кода, нужно добавить нахождение самого длинного на заданный символ #include <iostream>.

Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
dfrisk, используйте метод String::StringReplace(). Примеров его реализации на форуме много.
Регистрация: 15.11.2010
Сообщений: 8

Может все-таки кто-то приведет пример?
Перелопатил форум, везде очень громоздкие алгоритмы.
Пробовал реализовать через циклы,
но не работает,
мб посмотрите?

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
#include #pragma hdrstop #include #pragma argsused #include #include #include #include #include void main(void){ char* ptr; char string[128]; char symbol1[12]; char symbol2[12]; int i; bool a; int c=0; printf("Stroka\n"); gets (string); printf("zamenit\n"); gets (symbol1); printf("na\n"); gets (symbol2); int ls=strlen(string); int ls1=strlen(symbol1); int ls2=strlen(symbol2); for (i = 0; i ls; i++) { int p=i; for (p=i; p  i+ls1; p++) { if (string[p]!=symbol1[p]) {a=0;break;} else c++ /*if (i==ls1-1) >*/ ;} if (c==ls1) {for (p=i;pi+ls1;p++) {string[p]=symbol2[p];c=0;}}} puts (string); system("Pause");}

Как заменить букву в строке с

Добрый день!
Есть строка. Мне нужно заменить в ней символ, как во многих языках можно было б сделать вот так: str[3] = «A»
В C# так нельзя, покопавшись в msdn-е в String Member и не найдя там соответсвующего метода, я написал свою реализацию:

/* Замена в строке str символа по индексу index на newSymb */ public void ReplaceCharInString(ref String str, int index, Char newSymb)

Это единственный способ или я чего-то не знаю и это можно сделать проще?
Может все-таки есть какие-либо встроенные средства?

Re: Как в C# заменить символ в строке?

От: TK кывт.рф
Дата: 23.02.06 22:40
Оценка: +1

Hello, «ddocker»
> Есть строка. Мне нужно заменить в ней символ, как во многих языках можно было б сделать вот так: str[3] = «A»
> В C# так нельзя, покопавшись в msdn-е в String Member и не найдя там соответсвующего метода, я написал свою реализацию:
>

В .NET изменить содержимое строки нельзя. Если же со строкой надо произвести множество изменений, то стоит рассмотреть использование класса StringBuilder

> Это единственный способ или я чего-то не знаю и это можно сделать проще?
>

ref параметры лучше по возможности не использовать. Приемущества от них сомнительны, а усложнить понимание кода они могут.

В Вашем случае лучше сделать примерно так:

public string ReplaceCharInString(string source, int index, newSymb) < return String.Concat(source.Substring(. ), newSymb, source.Substring(. )); >

Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Как в C# заменить символ в строке?

От: ddocker www.codelab.ru
Дата: 23.02.06 22:55
Оценка:

Спасибо за оперативный ответ.

TK>В .NET изменить содержимое строки нельзя. Если же со строкой надо произвести множество изменений, то стоит рассмотреть использование класса StringBuilder

Что вы имеете ввиду? Для чего тогда те же методы Insert или Remove ? Они ж изменяют содержимое строки.

Re[3]: Как в C# заменить символ в строке?

От: TK кывт.рф
Дата: 23.02.06 23:00
Оценка:

Hello, «ddocker»
>
>

TK>В .NET изменить содержимое строки нельзя. Если же со строкой надо произвести множество изменений, то стоит рассмотреть использование класса StringBuilder

> Что вы имеете ввиду? Для чего тогда те же методы Insert или Remove ? Они ж изменяют содержимое строки.

Нет, содержимое строки не меняется. Данные методы создают новую строку.

Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Как в C# заменить символ в строке?

От: Hacker_Delphi
Дата: 24.02.06 10:20
Оценка:

Здравствуйте, ddocker, Вы писали:

Не совсем уверен, но наверное такой код будет производительнее:

 string t = "[AAA]"; char[] chars = t.ToCharArray(); chars[4] = 'G'; t = new string(chars); Text = t;

Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))

Re[2]: какая быстрей?

От: ddocker www.codelab.ru
Дата: 24.02.06 11:05
Оценка: 12 (1)

H_D>Не совсем уверен, но наверное такой код будет производительнее:
H_D>

H_D> string t = "[AAA]"; H_D> char[] chars = t.ToCharArray(); H_D> chars[4] = 'G'; H_D> t = new string(chars); H_D> Text = t; H_D>

Через механизм QueryPerformance замерил время выполнения упомянутых 3-х вариантов:

public String ReplaceCharInString1(String str, int index, Char newSymb) < return str.Remove(index, 1).Insert(index, newSymb.ToString()); > public String ReplaceCharInString2(String source, int index, Char newSymb) < return String.Concat(source.Substring(0, index), newSymb, source.Substring(index + 1)); > public String ReplaceCharInString3(String source, int index, Char newSymb) < char[] chars = source.ToCharArray(); chars[index] = newSymb; return new String(chars); >

В итоге самая быстрая оказалась — первая, самая медленная — вторая:
ReplaceCharInString1() ~ 500-550 mcs
ReplaceCharInString2() ~ 800-850 mcs
ReplaceCharInString3() ~ 630-660 mcs

Re[3]: какая быстрей?

От: Hacker_Delphi
Дата: 24.02.06 13:24
Оценка:

Здравствуйте, ddocker, Вы писали:

D>В итоге самая быстрая оказалась — первая, самая медленная — вторая:
D>ReplaceCharInString1() ~ 500-550 mcs
D>ReplaceCharInString2() ~ 800-850 mcs
D>ReplaceCharInString3() ~ 630-660 mcs
D>
Debug или Release?

Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))

Re[4]: какая быстрей?

От: ddocker www.codelab.ru
Дата: 24.02.06 13:34
Оценка:

Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Здравствуйте, ddocker, Вы писали:

D>>В итоге самая быстрая оказалась — первая, самая медленная — вторая:
D>>ReplaceCharInString1() ~ 500-550 mcs
D>>ReplaceCharInString2() ~ 800-850 mcs
D>>ReplaceCharInString3() ~ 630-660 mcs
D>>
H_D>Debug или Release?

ReplaceCharInString1() ~ 530-600 mcs
ReplaceCharInString2() ~ 850-860 mcs
ReplaceCharInString3() ~ 250-300 mcs

Ваша версия как показывают мои опыты — вырывается вперед.
Вот это открытие.

Re[5]: какая быстрей?

От: Small13th
Дата: 24.02.06 14:00
Оценка:

Здравствуйте, ddocker, Вы писали:

D>Ваша версия как показывают мои опыты — вырывается вперед.
D>Вот это открытие.

Ну тогда если интересно проверте еще такую версию
(хотя конечно и так ясно что она должна быть медленее ReplaceCharInString3)

public String ReplaceCharInString4(String source, int index, Char newSymb) < StringBuilder sb = new StringBuilder(source); sb[index] = newSymb; return sb.ToString(); >

Мои средние результаты:
Debug:
ReplaceCharInString1: 0,00000954 сек
ReplaceCharInString2: 0,00000855 сек
ReplaceCharInString3: 0,00000670 сек
ReplaceCharInString4: 0,00000772 сек

Release:
ReplaceCharInString1: 0,00000486 сек
ReplaceCharInString2: 0,00000422 сек
ReplaceCharInString3: 0,00000282 сек
ReplaceCharInString4: 0,00000360 сек

Да и кстати у меня почемуто 1 вариант всегда медленее 2.

Re[5]: какая быстрей?

От: Hacker_Delphi
Дата: 24.02.06 14:06
Оценка:

Здравствуйте, ddocker, Вы писали:

D>Ваша версия как показывают мои опыты — вырывается вперед.
D>Вот это открытие.
По идее она изначально должна была быть впереди. видимо Debug каких-то проверок добавляет.
Просто Remove/Insert двигают куски памяти. а эта версия — нет..
при работе с Remove/Insert у тебя происходит все так:

//Remove: 1. Check bounds, Copy start of string 2. Copy End of string //Insert 1. Check bounds, Copy start of string 2. Concat new substring 2. Copy & concat end of string

при работе через CharArr

1. Copy whole string 2. Check bounds, replace char 3. Copy whole string

Так что все закономерно

Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))

Re: Как в C# заменить символ в строке?

От: Аноним
Дата: 24.02.06 07:01
Оценка:

1. Действительно измения строки не происходит. В простом приближении стоит рассматривать строку как неизменяемый массив символов. При изменении строки создается новый массив (возможно иного размера). Отсюда потеря производительсности. Для правильной работы со строками рекомендуется испольозвать StringBuilder, грубо говоря, он резервирует под строку хранилище заведомо большего размера)
2. Для замены существуют методы String.Replace
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemstringclassreplacetopic.asp
3. и Regex.Replace
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemtextregularexpressionsregexclassreplacetopic.asp
4. Можно ковертнуть в массив символов (String.ToCharArray ), сделать все преобразования и вернуть в строку (наверно, самый неэффективный способ, но иногда самый удобный)
5 ИМХО способ предложенный TK самый простой (и самый действенный). Если вас смущает читабельность, то можно написать аналогично Дельфи
что-то типа такого
return source.Substring(. ) + newSymb + source.Substring(. )

С/у Дмитрий.

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Как в C# заменить символ в строке?

От: Аноним
Дата: 24.02.06 07:23
Оценка:

Самый действенный способ замены символа в строке:

 string testString = "abcdefg"; StringBuilder builder = new StringBuilder(testString); builder[2] = '1'; testString = builder.ToString();

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Re[3]: какая быстрей?

От: Аноним
Дата: 24.02.06 13:34
Оценка:

а что со StringBuilder’ом? ИМХО он дожен быть самый шустрый, судя по сорцам (хотел предложить вариант sb.Replace(), но обращение по индексактору должно быть быстрее).

С/у Дмитрий.

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Re[5]: какая быстрей?

От: Аноним
Дата: 24.02.06 15:07
Оценка:

На Платформе2006 Влад Чистяков (Vlad2) рассказывал, что большинство операций с массивами оказываются более шустрыми, чем с аналогами списками. Т.е иногда выгоднее отдать копию массива (например датаровс), чем ссылку на список. Выигрышь появляется, как я понял, из-за минимизации проверок (выхода за пределы и тп), а также особенностей хранения массива (то бишь всем известные размещения в стеке и в куче).
ИМХО ноги оттуда ростут (согласен с Hacker_Delphi, просто попытался обобщить).

С/у Дмитрий.

данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение

Re[2]: Как в C# заменить символ в строке?

От: Hacker_Delphi
Дата: 28.02.06 12:09
Оценка:

Здравствуйте, TK, Вы писали:

TK>

TK>public string ReplaceCharInString(string source, int index, newSymb) TK> < TK>return String.Concat(source.Substring(. ), newSymb, source.Substring(. )); TK>> TK>

Медленно. можешь в этой ветке посмотреть сравнение производительности.
Re[4]: какая быстрей?

Автор: ddocker
Дата: 24.02.06

Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))

Re[2]: Как в C# заменить символ в строке?

От: Hacker_Delphi
Дата: 28.02.06 12:09
Оценка:

Здравствуйте, Димон, Вы писали:

Д>4. Можно ковертнуть в массив символов (String.ToCharArray ), сделать все преобразования и вернуть в строку (наверно, самый неэффективный способ, но иногда самый удобный)
Как оказалось самый эффективный (правда со StringBuilder еще не сравнивали).
Re[4]: какая быстрей?

Автор: ddocker
Дата: 24.02.06

Д>5 ИМХО способ предложенный TK самый простой (и самый действенный). Если вас смущает читабельность, то можно написать аналогично Дельфи
Д>что-то типа такого
Д>return source.Substring(. ) + newSymb + source.Substring(. )
Медленно.

Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *