Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] Замена символов в строке


Автор: Tevad 15.5.2007, 03:58
Постановка задачи: В строке заменить все двоеточия точкой запятой, подсчиатб количество замен. И вторая задача: Ввести число и четные цифры этого числа уменьшить в двое. Заранее бгагодарен.

Автор: JusTalionis 15.5.2007, 09:05
Задачи несложные, но несколько громоздкие. Я бы сделал по-старинке, используя функцию MID$, которая может выделять из строки определенный знак, или заменять его другим.
Выходит примерно так:
1. Определяем длину строки при помощи функции LEN
2. Прогоняем цикл по всем знакам строки, с участием MID$.
3. В этом цикле анализируем каждый знак, какой нужно - заменяем.
4. На каждый факт замены приращаем еще какую-нибудь переменную-счетчик.
В результате получаем замененную строку и одновременно кол-во замен.

С числом несколько сложнее. Можно сделать полностью в числовом виде: выделять цифру путем арифметических манипуляций (деление на 10, округление, вычитание и т. д.) В целом это более быстрый и эффективный путь.

А можно перевести число в строковое представление и свести таким образом к выше решенной задаче.


Автор: Alary 15.5.2007, 09:13
Попробуй функции Split и Join.

Перевести число в строковое представление можно функцией функции CStr. Обратно строку в число - функции CInt, CLng, CDbl.

Автор: Akina 15.5.2007, 09:50
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Akina 15.5.2007, 10:06
Код

dim str1 as string, str2 as string
dim tmp() as string

str1 = "строка:в:которой:куча:двоеточий"
tmp = split(str1, ":")
msgbox "В строке было двоеточий:" & cstr(ubound(tmp) - lbound(tmp)) & vbNewLine & _
       "Вот как она выглядит после замены их на точки с запятой:" & vbNewLine & vbNewLine & _
       join(tmp, ";")

Автор: Alexeis 15.5.2007, 12:28

M
Alexeis
Модератор: Название темы должно отражать ее суть!

Модератор: Пожалуйста, один топик - один вопрос.

Автор: Alary 15.5.2007, 13:11
оказалось, что еще функция Replace ;)
Код

str2 = Replace(str1, ":", ";")
' или
str2 = Replace(str1, "2", "1")
str2 = Replace(str2, "4", "2")
str2 = Replace(str2, "6", "3")
str2 = Replace(str2, "8", "4")


а Split и Join хороши тем, что двоеточия можно отдельно не считать, а посмотреть размер массива tmp() и вычесть 1

Автор: JusTalionis 15.5.2007, 14:15
Цитата(Alary @  15.5.2007,  09:13 Найти цитируемый пост)
Обратно строку в число - функции CInt, CLng, CDbl.
Обратно в число - Val. А указанные C... - это функции конвертирования между числовыми форматами, причем CInt - округление дроби в целое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)