Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/41: Рейтинг темы: голосов - 41, средняя оценка - 4.51
 Аватар для Naro
2 / 2 / 2
Регистрация: 13.07.2010
Сообщений: 71

Замена символа в String без переписывания всей строки

10.11.2010, 00:36. Показов 7747. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть слово которое заполняется по 1 символу String G и G == "1110" и надо под конец изменить на "1119" есть ли какой нибудь способ не переписывать посимвольный заново а просто заменить 1 символ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2010, 00:36
Ответы с готовыми решениями:

Вывести подстроку, начиная с символа после последнего пробела и до конца строки (без string.h)
нужно вывести подстроку начиная с символа после последнего пробела и до конца строки. при этом нельзя использовать string.h

Перевод слова их переменной string в другую переменную string для вывода ее отдельно от всей строки
У меня есть код, я выполняю задание учителя. В этом задании мне надо ввести кол слов, а также размер слов, которые надо вывести. Проблема...

Алгоритм удаления гласных букв из строки без использования методов класса String (с использованием только сложения и чтения отдельного символа).
Кто может, напишите хотя бы один алгоритм, пожалуйста. Алгоритм удаления гласных букв из строки без использования методов класса...

10
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8728 / 3680 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
10.11.2010, 00:38
Можно так попробовать:
C#
1
2
            string g = "1010";
            g = string.Concat(g.Substring(0, g.Length - 1), "9");
или так (для циклов оптимально):
C#
1
2
3
            StringBuilder sb = new StringBuilder();
            sb.Append("1010");
            sb[3] = '9';
1
 Аватар для Naro
2 / 2 / 2
Регистрация: 13.07.2010
Сообщений: 71
10.11.2010, 01:26  [ТС]
а в чем разница между
C#
1
2
            string g = "1010";
            g = string.Concat(g.Substring(0, g.Length - 1), "9");
и
C#
1
2
            string g = "1010";
            g = g.Substring(0, g.Length - 1) + "9";
?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8728 / 3680 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
10.11.2010, 02:00
C большим количеством сложения строк (конкатенацией) первый вариант удобней.

В цикле лучше (нужно) использовать StringBuilder.

Скажем так, написал от делать нечего, не зная зачем

Добавлено через 17 минут
Если сказать более грамотно, то оператор '+' это обёртка над string.Concat. Т.к. в конечном итоге компилятор заменит все '+' на один из перегруженных методов string.Concat.
0
 Аватар для Naro
2 / 2 / 2
Регистрация: 13.07.2010
Сообщений: 71
10.11.2010, 02:00  [ТС]
Второй вариант мне понравился больше по производительнее оказался жаль что щас много переделывать придется.Тока чтото както он памяти дофига жрет.
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
10.11.2010, 22:32
Цитата Сообщение от Naro Посмотреть сообщение
Второй вариант мне понравился больше по производительнее оказался жаль что щас много переделывать придется.Тока чтото както он памяти дофига жрет.
Если вы имеете ввиду под вторым вариантом StringBuilder, то ограничивайте выделяемую память для экземпляра StringBuilder:
C#
1
StringBuilder sb = new StringBuilder(256);
где число - размер выделяемой памяти (имхо в байтах)

По поводу оптимизации работы со строками почитайте тут: Работа со строками. Строковые функции
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
11.11.2010, 11:31
Цитата Сообщение от kirill29 Посмотреть сообщение
где число - размер выделяемой памяти (имхо в байтах)
авторы описывают параметризированный конструктор как "задает емкость в количестве символов"
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
11.11.2010, 12:58
Цитата Сообщение от Naro Посмотреть сообщение
Есть слово которое заполняется по 1 символу String G и G == "1110" и надо под конец изменить на "1119" есть ли какой нибудь способ не переписывать посимвольный заново а просто заменить 1 символ?
Есть. С помощью unsafe кода.
C#
1
fixed(char* p = G) *(p+3) = '9';
"+" - нет пере выделения памяти
"-" - исправление коснется всех (string)ссылок на "1110"
0
 Аватар для Naro
2 / 2 / 2
Регистрация: 13.07.2010
Сообщений: 71
12.11.2010, 04:00  [ТС]
А есть ли оналог string.Substring но для StringBuilder , надо вырезать допустим с 5 по 20 подстроку из 100 символов?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
12.11.2010, 12:52
Naro, второй оверлоад ToString(int index, int length);
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
20.09.2012, 20:37
Цитата Сообщение от kirill29 Посмотреть сообщение
ограничивайте выделяемую память для экземпляра StringBuilder
Это не ограничение, а указание изначального размера, который может (и будет) увеличиваться по мере заполнения.

Цитата Сообщение от kirill29 Посмотреть сообщение
в байтах
В символах.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2012, 20:37
Помогаю со студенческими работами здесь

Замена символа в string
подскажите как можно изменить запятую на точку в переменной а то я конвертировать в int не могу изза этого x = 12,3456 --> x =...

Замена символа String
вобщем столкнулся с такой проблема, нужно записать в БД путь к картинке открываю файл при помощи private void button1_Click(object...

Замена одного символа в String
Можно ли в C# воздействовать на отдельные символы строки (string). На следующий код компилятор ругается: string str = "Hello"; ...

Анализ и замена символа в string
как изменить первый символ в string,если он равен -?

Замена символа в string, которая не нужна
В C# не имею достаточного опыта! Получаю от контроллера через порт строку: string msg = serialArduinoPort.ReadLine(); Пока...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru