powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / массив символов
15 сообщений из 90, страница 4 из 4
массив символов
    #37253789
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, господа,..
Я, конечно, не извращенец , но формулу для VBA придумал:
Код: plaintext
TEXT1 = Trim(Replace(Join(Split(Join(Split(Replace(Replace(TEXT1, Space( 1 ), Chr( 1 )), String( 2 , Chr( 1 )), Chr( 2 )), Chr( 1 ))), Chr( 2 ))), Space( 2 ), Space( 1 )))
Но ИМХО, через цикл по реплейсу двойных пробелов будет меньше операций.
...
Рейтинг: 0 / 0
массив символов
    #37253792
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заодно напомню, что если работа выполняется в Excel, то достаточно:
Код: plaintext
TEXT1 = Application.WorksheetFunction.Trim(TEXT1)
...
Рейтинг: 0 / 0
массив символов
    #37253795
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
q = Len(Text1.Text)
Dim a(q)
For w =  1  To q
a(w) = Mid(Text1.Text,  1 )
Next
End Sub
проверяйте будут пробелы??

Проверила...она не работает...
...
Рейтинг: 0 / 0
массив символов
    #37253798
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TEXT1 = Trim(Replace(Join(Split(Join(Split(Replace(Replace(TEXT1, Space(1), Chr(1)), String(2, Chr(1)), Chr(2)), Chr(1))), Chr(2))), Space(2), Space(1)))
Ого формула....
...
Рейтинг: 0 / 0
массив символов
    #37253800
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
julia27,

посмотри повыше мои сообщения...
...
Рейтинг: 0 / 0
массив символов
    #37253802
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
щас попробую применить ту огромную формулу=) работа не в Excel выполняется=)
...
Рейтинг: 0 / 0
массив символов
    #37253803
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюесли не ошибаюсь
ошибаешься
...
Рейтинг: 0 / 0
массив символов
    #37253824
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все короче, не буду делать это задание, надоело, ниче понять не могу. Спасибо=)
...
Рейтинг: 0 / 0
массив символов
    #37253893
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНаоборот - из лутца воду делают.
...Пардон, - разволновался.
Shocker.Proэто ж студенты "мне не надо, чтоб быстрее, мне надо, чтобы ты за....ся". (с)Это не про ВУЗ, это про армию.

Ладно бы ещё на Паскале или Си. Но на VB! Строку - в массив для обработки. Повторю - ЖУТЬ!

julia27,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Sub zai_at_sa()
Dim arr() As String *  1 
Dim i As Integer, ii As Integer, i2 As Integer, iLen As Integer

' "отладочные переменные" - входной и выходной "массивы" символов
Dim Text1$, Text2$

Text1 = "   У МЕНЯ     ПЛОХИ    ДЕЛА     С     ВИЗУАЛ        БЭЙСИК   "
' Text1 = "   "

iLen = Len(Text1) ' длина набора символов
ReDim arr( 1  To iLen) ' задание размера "рабочэго" массива

' заполнение массива символами
For i =  1  To iLen: arr(i) = Mid(Text1, i): Next i

' собсно "обработка"
For i =  1  To iLen
If arr(i) = " " Then
    If i =  1  Then i =  0 
    ii = i +  1 
    
    If ii <= iLen Then
    Do While arr(ii) = " "
        ii = ii +  1 : If ii > iLen Then Exit Do
    Loop
    End If
    
    If ii > iLen Then
        If i =  0  Then i =  2 
        ReDim Preserve arr( 1  To i -  1 ): Exit For
    Else
        i = i +  1 : i2 = ii
        If i <> i2 Then
        Do While i <= ii And i2 <= iLen
            If arr(i2) <> " " Then
                arr(i) = arr(i2): arr(i2) = " "
                i = i +  1 : i2 = i2 +  1 
            Else: Exit Do
            End If
        Loop
        End If
        
        If i2 > iLen Then
            ReDim Preserve arr( 1  To i -  1 ): Exit For
        Else: i = i -  1 
        End If
    End If
End If
Next i

' "лутц обратно на воду"
iLen = UBound(arr): Text2 = ""
For i =  1  To iLen: Text2 = Text2 & arr(i): Next i

' провэрка (for debug only)
Debug.Print "былло ~" + Text1 + "~"
Debug.Print "стало ~" + Text2 + "~"

End Sub
...
Рейтинг: 0 / 0
массив символов
    #37255718
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам огромное!!!!
...
Рейтинг: 0 / 0
массив символов
    #37256829
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаНо на VB! Строку - в массив для обработки. Повторю - ЖУТЬ!

Вот без массива:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub sub1()
 Text1 = "   У МЕНЯ     ПЛОХИ    ДЕЛА     С     ВИЗУАЛ        БЭЙСИК   "
 Text2 = ""
 j =  0 
 s = Trim(Text1)
 For i =  1  To Len(s)
  c = Mid(s, i,  1 )
  If c = " " Then
   j = j +  1 
   Else
   If j >  0  Then
    Text2 = Text2 + " "
    j =  0 
   End If
   Text2 = Text2 + c
  End If
 Next i
 Debug.Print "былло ~" + Text1 + "~"
 Debug.Print "стало ~" + Text2 + "~"
End Sub
...
Рейтинг: 0 / 0
массив символов
    #37258114
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, что значит "без массива"? Неявно подразумевается, что строка - массив символов.
С другой стороны, если кому-то непонятен пример совместного использования split-join, то можно так:
Код: plaintext
1.
2.
3.
4.
5.
t = "      I have    problems    with    strings   in   VBA"
a = Split(t)
t = IIf(Len(a( 0 )) >  0 , a( 0 ), "")
For i =  1  To UBound(a)
    If Len(a(i)) >  0  Then t = t & " " & a(i)
Next
...
Рейтинг: 0 / 0
массив символов
    #37260148
julia27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"У МЕНЯ ПЛОХИ ДЕЛА С ВИЗУАЛ БЭЙСИК" - вот эта строка просто вообще ни причем=))это показывалось для примера, что должно происходить с пробелами=))при запуске программы нужно вводить символы...и потом при нажатии кнопки между этими символами должо остаться по одному пробелу=)
...
Рейтинг: 0 / 0
массив символов
    #37260188
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
julia27,
пример оказался заразительным
...
Рейтинг: 0 / 0
массив символов
    #37260209
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаjulia27,
пример оказался заразительным
скорее все-таки наоборот - автор заразил пример
...
Рейтинг: 0 / 0
15 сообщений из 90, страница 4 из 4
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / массив символов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]