powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Повторяемые символы в один
6 сообщений из 6, страница 1 из 1
Повторяемые символы в один
    #39573570
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть строки, где по разным причинам идет повторение символов, например подряд 10 пробелов, или 28 запятых или сколько-то других символов. А из всей этой череды подряд идущих символов для каждого символа нужно оставить один - один пробел из 10, одну запятую из 28 и т.д. и т.п. Конечно можно убрать реплейсами, но интересно возможно ли сделать регуляркой, RegExp'ом? Подскажите выражение с регэкспом.
Пример строки
Код: plaintext
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
Надо оставить
Код: plaintext
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,НЕПРОЗРАЧНЫЙ,МАССА 50ГР/М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
...
Рейтинг: 0 / 0
Повторяемые символы в один
    #39573631
RegExp,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_worldвозможно ли сделать регуляркой, RegExp'ом?
что-то вроде такого
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Test1()
    Dim oRegExp As Object
    Dim str1 As String
    str1 = "ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ"
    
    Set oRegExp = CreateObject("VBScript.RegExp")
    oRegExp.Global = True
    oRegExp.Pattern = "(.)\1+"

    Debug.Print str1
    Debug.Print oRegExp.Replace(str1, "$1")
    Set oRegExp = Nothing
End Sub


Код: vbnet
1.
2.
3.
Test1
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,НЕПРОЗРАЧНЫЙ,МАСА 50ГР/М2,Ф-Т 470М-81РУЛ. УПАКОВ. НА 14ПОДОНОВ,ВЕС ПОДОНОВ 32КГ.ПЕРГАМЕНТ
...
Рейтинг: 0 / 0
Повторяемые символы в один
    #39573648
RegExp,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RegExp,
Код: vbnet
1.
2.
3.
Test1
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,НЕПРОЗРАЧНЫЙ,МАСА 50ГР/М2,Ф-Т 470М-81РУЛ. УПАКОВ. НА 14ПОДОНОВ,ВЕС ПОДОНОВ 32КГ.ПЕРГАМЕНТ



сори, только "дошло", что "не всё так однозначно" :)

так, наверна

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Test1()
    Dim oRegExp As Object
    Dim str1 As String
    str1 = "ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ"
    
    Set oRegExp = CreateObject("VBScript.RegExp")
    oRegExp.Global = True
    oRegExp.Pattern = "([^А-Я0-9])\1+"

    Debug.Print str1
    Debug.Print oRegExp.Replace(str1, "$1")
    Set oRegExp = Nothing
End Sub



Код: vbnet
1.
2.
3.
Test1
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,НЕПРОЗРАЧНЫЙ,МАССА 50ГР/М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
...
Рейтинг: 0 / 0
Повторяемые символы в один
    #39573659
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы посоветовал, наоборот, указать в регэкспе набор символов, которые НУЖНО "схлопнуть". Ибо то, что какой-то символ не чистится, увидеть и добавить в код проще, чем заметить ошибочное удаление символов.
...
Рейтинг: 0 / 0
Повторяемые символы в один
    #39573666
RegExp,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЯ бы посоветовал, наоборот, указать в регэкспе набор символов, которые НУЖНО "схлопнуть". Ибо то, что какой-то символ не чистится, увидеть и добавить в код проще, чем заметить ошибочное удаление символов.+1
Код: vbnet
1.
    oRegExp.Pattern = "([,/ ])\1+"
...
Рейтинг: 0 / 0
Повторяемые символы в один
    #39573690
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Все получилось
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Повторяемые символы в один
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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