Отсечение пустых строк

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Отсечение пустых строк

Сообщение V...a » 20.06.2003 (Пт) 15:00

Есть Text, в котором могут быть в конце "пустые строки" (возможны только пробелы) - результат копирования Ctrl-C--Ctrl-V...
Помогите, плиз, с функцией удаления их.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 15:05

Функция Trim
Trim(String)

Функция Trim объединяет действия двух функций LTrim и RTrim,удаляя пробелы как справа,так и слева

Возвращаемое значение
Возвращает исходную строку типа Variant(String) без начальных и завершающих пробелов.Если аргумент имеет значение Null,то возвращается Null

Параметры
String
Обязательный аргумент может представлять любое строковое выражение
Пример:
Код: Выделить всё
Dim retval
retval=Trim("  <-Русский_Проект->  ")
Print retval

Смотри также
LTrim, RTrim
Категория: Функции обработки строк


--------------------------------------------------------------------------------

© 1999-2001 А.Климов
Русский_Проект
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Нет... Не совсем то...

Сообщение V...a » 20.06.2003 (Пт) 15:16

Нет, имелось ввиду следующая ситуация:

...
Text
#13#10
#13#10#32#32#32
#13#10
#13#10#32
#13#10


....
И вот эти строки надо отсечь :(

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 15:23

чего-то не дошло...
если у тебя в конце строки символов идут управляющие символы (с кодом до 31 включительно), то просто с помощью Instr ищешь первый не отображаемый символ в строке и Mid$'ом выгребыешь все что стоит до этой позиции.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Опять не совсем то :)

Сообщение V...a » 20.06.2003 (Пт) 15:36

#13#10 - перенос строки
#32 - пробел
... Последние пять строк и надо отсечь.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 20.06.2003 (Пт) 15:40

А replace ничем не поможет? В смысле что заменять #32 на "" :?

V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Вношу окончательную ясность...

Сообщение V...a » 20.06.2003 (Пт) 15:44

Есть текст:

Код: Выделить всё
[b]texttexttexttext[/b]#13#10
#13#10
#13#10#32#32#32
#13#10
#13#10#32
#13#10


Нужен текст:

Код: Выделить всё
[b]texttexttexttext[/b]#13#10


где:
#13#10 - перенос строки
#32 - пробел

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 15:52

ну примерно так

Код: Выделить всё
Dim str As String
Dim pos As Integer

str = <чего_там_у_тебя>

pos = Instr(str, vbCrLf) ' ищем первый перевод строки
str = Mid$(str, 1, pos - 1) ' обрезаем то, что не нужно


можно в цикле по-символьно пройти строку и определить, где действительно она кончается и начинается твоя лабуда.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Не, все равно не нашли общий язык :)

Сообщение V...a » 20.06.2003 (Пт) 16:16

в texttexttext - тоже могут быть переносы и пробелы.
Просто нужно отсечь "пустые" строки в конце...

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 16:22

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

Код: Выделить всё
Dim str As String
Dim pos As Integer

str = <чего_там_у_тебя>

For pos = Len(str) To 1 Step -1
    If Mid$(str, pos, 1) > 32 Then
        str = Mid$(str, 1, pos)
        Exit For
    End If
Next pos
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 20.06.2003 (Пт) 16:22

С конца бери по одному символу и удаляй их если код взятого символа = 10 13 32
Какая проблема-то?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 21.06.2003 (Сб) 7:47

Код: Выделить всё
  Dim s As String, ss() As String, i As Long

  ' Исходная строка в вопросе
  s = "texttexttexttext" & vbCrLf & vbCrLf & vbCrLf & "   " & vbCrLf & vbCrLf & " " & vbCrLf
 
  ss = Split(s, vbCrLf)
  For i = UBound(ss) To 0 Step -1
    If Trim(ss(i)) = "" And i <> 0 Then
      ReDim Preserve ss(i - 1)
    Else
      Exit For
    End If
  Next i
  s = Join(ss, vbCrLf) & vbCrLf
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

V...a
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 20.06.2003 (Пт) 14:53

Всем спасибо, но все же сама написала...

Сообщение V...a » 21.06.2003 (Сб) 13:04

Код: Выделить всё
function StringCut(s)
Dim i, a
   ss = Split(s, vbCrLf)
   k = 0
   t = 0
   For i = 0 to UBound(ss)
      If Trim(ss(i)) = "" Then
         k = k + 1
      else
         if (k<>0)and(t<>0) then a = a + "<br>"
         k = 0
         a = a + ss(i)
         if i < UBound(ss) then a = a + "<br>"
         t = 1
      end if
   Next
   StringCut = a
end function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 52

    TopList