Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Повторяемые символы в один / 6 сообщений из 6, страница 1 из 1
21.12.2017, 13:47
    #39573570
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяемые символы в один
Есть строки, где по разным причинам идет повторение символов, например подряд 10 пробелов, или 28 запятых или сколько-то других символов. А из всей этой череды подряд идущих символов для каждого символа нужно оставить один - один пробел из 10, одну запятую из 28 и т.д. и т.п. Конечно можно убрать реплейсами, но интересно возможно ли сделать регуляркой, RegExp'ом? Подскажите выражение с регэкспом.
Пример строки
Код: plaintext
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,НЕПРОЗРАЧНЫЙ,МАССА          50ГР//////М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
Надо оставить
Код: plaintext
ПЕРГАМЕНТ РАСТИТЕЛЬНЫЙ,НЕПРОЗРАЧНЫЙ,МАССА 50ГР/М2,Ф-Т 470ММ-81РУЛ. УПАКОВ. НА 14ПОДДОНОВ,ВЕС ПОДДОНОВ 322КГ.ПЕРГАМЕНТ
...
Рейтинг: 0 / 0
21.12.2017, 14:36
    #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
21.12.2017, 14:48
    #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
21.12.2017, 14:53
    #39573659
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяемые символы в один
Я бы посоветовал, наоборот, указать в регэкспе набор символов, которые НУЖНО "схлопнуть". Ибо то, что какой-то символ не чистится, увидеть и добавить в код проще, чем заметить ошибочное удаление символов.
...
Рейтинг: 0 / 0
21.12.2017, 14:58
    #39573666
RegExp,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяемые символы в один
AkinaЯ бы посоветовал, наоборот, указать в регэкспе набор символов, которые НУЖНО "схлопнуть". Ибо то, что какой-то символ не чистится, увидеть и добавить в код проще, чем заметить ошибочное удаление символов.+1
Код: vbnet
1.
    oRegExp.Pattern = "([,/ ])\1+"
...
Рейтинг: 0 / 0
21.12.2017, 15:17
    #39573690
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторяемые символы в один
Спасибо! Все получилось
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Повторяемые символы в один / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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