Visual Basic, .NET, ASP, VBScript
 

   
 
Описание для автора не найдено
 
     
   
 

Источник: http://bit.pirit.info/forum/viewtopic.php?t=215

 

Автор: BiT

rootsoft@mail.ru

 

Реверс строки, или как из ТОПОРа сделать РОПОТ.

 

 

Да я знаю, что специальной АПИшки для этого нет,

Но нужна ли она нам?

Когда используя 3 переменные, 1 цикл и пару функций

Можно реализовать данное превращение.

 

Для тех, кто в танке и не понял из названия, о чем идет речь, объясняю.

В данной статье я объясню, как написать программу для переворачивания строк, т.е. как ТОПОР превратить в РОПОТ.

 

Раньше этот вопрос, должно быть, был актуален, но в 6 версии Visual Basic появилась функция StrReverse, которая позволяет, написав всего несколько строчек кода перевернуть необходимый вам текст. Помимо StrReverse в 6 версии добавлены еще такие функции работы со строками как Split, InstrRev, Filter, Join. Так же включены специализированные функции FormatNumber, FormatDateTime, FormatCurrency и FormatPercent.

 

Синтаксис:

StrReverse(Expression As String)

Изменяет порядок следования символов в строке, на обратный.

Т.е. если переменная содержит “ТИП”, функция возвратит “ПИТ”.

 

Пример использования функции StrReverse:

 

Option Explicit

‘Делаем объявление переменных обязательным

Dim strStroka As String

‘Объявляем переменную, для хранения текста, строкового типа

 

Private Sub Form_Load()

'При загрузке формы уберем весь текст из полей

Text1.Text = ""

Text2.Text = ""

End Sub

 

Private Sub Text1_Change()

‘Чтобы отслеживать изменения в текстовом поле, весь код помести в событие поля Change.

strStroka = Text1.Text

‘Текст введенный в текстовое поле присваиваем переменной strStroka

Text2.Text = StrReverse(strStroka)

‘Выводим результат работы функции во второе текстовое поле

End Sub

 

А как же поступали раньше, да, интересно.

А чего тут думать давайте напишем программу, без использования функции.

 

Работа со строками может приносить интересные плоды, и я не совсем давно написал одну программу.

 

Объясню, зачем нужны переменные, строка из поля будет попадать для обработки в первую переменную - strA, во вторую переменную, strB, после обработки будет помещен результат, после чего выведен во второе текстовое поле. Ну а третья переменная, I, понадобится для хранения значения счетчика, используемого в цикле.

 

Что нам необходимо?

 

Не будем терять время и приступим, вначале создадим новый проект и форму переименуем из Form1 в ReversThis.

На форме расположим 2 TextBox (текстовых поля) и 2 CommandButton (кнопки).

Переименуем соответственно txtFirst и txtSecond, cmdCls и cmdExit. Думаю, название элементов говорят сами за себя, в первое текстовое поле мы будем вводить текст, а во втором получать результат разворота. Чтобы получилась не сырая недоработка, а законченный проект – нажатие на одну кнопку будет очищать текстовые поля, а на вторую завершать приложение.

 

Для выполнения поставленной задачи нам потребуется использовать цикл ForNext и 2 функции работы со строками: Len и Mid.

 

Функция Len возвращает число символов содержащихся в строковой переменной, Len(strA).

 

Например:

 

Помести на форме TextBox, Label.

 

Dim strA as String

strA = Text1.text

Label1.Caption = Len(strA)

 

Чтобы программа отслеживала изменения, происходящие в текстовом поле, этот код должен происходить по событию Change.

 

Private Sub Text1_Change()

 

End Sub

 

Для очищения текстового поля и метки по событию формы Load, приравняем: Text1 = "" и Label1 = ""

 

Private Sub Form_Load()

 

End Sub

 

Но вернемся к нашей программе.

Для чего же нужна будет нам функция Len?

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

 

Задумались?

 

Это значение будет указывать нам максимальное значение в цикле.

Т.е. цикл будет происходить от 1 до Len(strA).

 

Ладно, дальше станет понятнее.

 

Еще нам нужна функция Mid.

 

Синтаксис:

Mid(“переменная”, “начальная_позиция”, “количество_символов”)

Например:

 

Private Sub Form_Load()

Dim strA As String

strA = "Пример Использования Функции"

Label1 = Mid(strA, 8, 13)

'Результат "Использования"

End Sub

 

С помощью функции Mid мы будем обрабатывать переменную strB.

 

Вот собственно итог нашей работы:

 

Option Explicit

'Откройте пункт в меню Tools=>Options...

'И поставьте галочку, Require Variable Declaration

'Теперь Option Explicit, будет появляться автоматически при создании нового проекта

'Это нужно для предотвращения лишних ошибок, в работе с переменными

Dim strA As String

'Объявляем переменную strA как строковую

'Строка взятая из ТБ1

Dim strB As String

'Объявляем переменную strB как строковую

'Строка помещена в ТБ2

Dim I As Integer

 

Private Sub Form_Load()

'при загрузке формы очистим оба текстовых поля

txtFirst.Text = ""

txtSecond.Text = ""

End Sub

 

Private Sub txtFirst_Change()

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

'Это нажатие на клавишу или вставка из буфера

strB = ""

'При каждом изменении strB будет очищаться, и строиться заново

strA = txtFirst.Text

'Помещаем в переменную текст из поля

For I = 1 To Len(strA)

'Цикл For ...Next

'Начальное значение 1, конечное это - длина строки из переменной

strB = Mid(strA, I, 1) & strB

'Самая важная строка.

'Строим переменную, обрезая переменную strA

'Где I меняется в цикле от 1 до длины строки

'В переменную обрезается 1 символ, & strB - сохраняет прежнее значение

Next I

'Продолжение цикла

txtSecond.Text = strB

'Вывод результата в текстовое поле

End Sub

 

Private Sub cmdCls_Click()

'При нажатии на кнопку очищаем текстовые поля и переменные

txtSecond.Text = ""

strB = ""

txtFirst.Text = ""

strA = ""

End Sub

 

Private Sub cmdExit_Click()

'Выгружаем форму и завершаем программу

Unload Me

End Sub

 
     

   
   
     
  VBNet рекомендует