Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
130
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

6.5. Удаление лишних пробелов из строки текста.

LTrim, Trim, RTrim:

Лишние пробелы в начале строки появляются в результате случайного нажатия клавиш пробела, а в конце - при использовании строк фиксированной длины, когда длина вводимого текста меньше объявленной длины строки.

Функция LTrim удаляет ведущие пробелы (пробелы в начале строки), а RTrim – в конце строки. Функция Trim удаляет пробелы в начале и в конце. Их синтаксис:

<преобразованная строка> = LTrim (<исходная строка>)

<преобразованная строка> = UTrim (<исходная строка>)

<преобразованная строка> = Trim (<исходная строка>)

6.6. Инвертирование строк.

StrReverse:

Функция StrReverse инвертирует строку текста. Ее синтаксис:

<инвертированная строка> = StrReverse(< исходная строка>)

Пример. Оиределить, является ли введенное целое положительное число палиндромом.

Dim n%, st$

n = InputBox(“Введите целое положительное число”)

st = LTrim$(Str(n))

If st = StrReverse$(st) Then

Text1 = “ Число “ & n & “ - палиндром”

Else

Text1=” Число “ & n & “- не палиндром”

End If

6.7. Преобразование текстовых строк в числа и наоборот.

Str, Val:

Функция Str преобразует число в строку текста. Её синтаксис:

<символьное представление числа> = Str (<число>)

Параметр <число> может быть числом, переменной либо функцией, возвращающей числовое значение. Если его значение положительное, то символьное представление числа будет начинаться с пробела, так как Str резервирует одно знакоместо под знак числа.

На это следует обратить особое внимание! Если Вы в символьную переменную s и в числовую переменные n ввели числа и хотите проверить их равенство, то, казалось бы, это можно сделать двумя способами:

1) If n = Val(s) Then . . . . .

2) If s = Str(n) Then . . . . .

Однако это не так. Пусть, например, в обоих случаях Вы вводили число 357, т.е. s = “375” и n = 375. Условный оператор в первом случае всегда будет работать верно, а во втором – только для отрицательных чисел. Действительно, поскольку функция Str резервирует одно знакоместо под знак числа, то Str(n) даст в результате строку “ 375”, в которой первой цифре числа предшествует пробел и, значит, s = “375” не равно результату Str(n) = “ 375”.

Функция Val преобразует строку символов в число, если это возможно. Её синтаксис:

<число> = Val (<исходная строка>).

Здесь параметр <число> представляет числовую переменную, в которой будет храниться возвращаемое функцией числовое значение. Параметр <исходная строка> может быть сроковым литералом, переменной или функцией, возвращающей строковое значение.

Функция Val сначала отбрасывает пробелы пред первым символом в исходной строке. После этого анализируется первый символ строки. Если он не является цифрой или знаком числа, то функция Val возвращает нулевое значение. Если является - она последовательно считывает символы строки до тех пор, пока не встретит первый нечисловой символ. При этом игнорируются все символы пробелов внутри исходной строки. Выделив число из строки, функция Val преобразует его из символьного представления в числовое и присваивает полученное значение параметру <число>.

Следует отметить, что функции Str и Val в качестве десятичного разделителя признают только точку. Это иногда приводит к неожиданному результату. Так, например, в учебниках по VB утверждается, что для передачи свойству Text текстового окна числового значения не обязательно применять к нему функцию Str, т.к. и без нее число будет преобразовано в символьное представление. На самом деле для вещественных чисел операторы:

Text1.Text = a и Text1.Text = Str(a)

не будут эквивалентны. В первом случае, например, при a = 3.7, свойству Text текстового окна передастся строка “3,7” (c запятой в качестве десятичного разделителя и без зарезервированного под знак числа ведущего пробела), а во втором случае свойству Text текстового окна передастся строка “ 3.7” (с зарезервированным под знак числа ведущим пробелом и точкой в качестве десятичного разделителя). Если теперь к свойству Text текстового окна применить функцию Val для преобразования хранящегося в нем символьного представления вещественного числа в числовое, то в первом случае мы получим: Val(Text1.Text) = 3, а во втором: Val(Text1.Text) = 3.7. Это происходит потому, что, встретив запятую при последовательном считывании символов, функция Val не распознает ее в качестве десятичного разделителя и прекращает дальнейшее считывание символов, полагая, что символы числа исчерпаны.

Это справедливо не только для текстового окна, но и для списков и для свойства TextMatrix элемента MSFlexGrid.

При вводе вещественного числа с помощью функции InputBox на клавиатуре можно в качестве десятичного раздалителя использовать либо запятую, либо точку. Но нужно помнить следующее: если переменная m объявлена, как вещественное число, и Вы при его вводе: m = InputBox(“Введите вещественное число m”) поставили запятую, то функция InputBox вернет строку с этой запятой. Затем оператором присвоения эта строка будет автоматически преобразована в число. Если же Вы поставили точку, то будет выдано сообщение о несовпадении типов. Чтобы избежать этой путаницы, нужно преобразовывать вводимое число с помощью функции Val: m = Val(InputBox(“Введите вещественное число m”)) и при наборе значения вещественных чисел всегда использовать в качестве десятичного разделителя точку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]