8.х Убрать из строки все символы кроме букв и цифр

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Euronymous, 16 дек 2014.

  1. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Всем доброго времени суток, существует ли в природе такая функция или как быстро реализовать это самостоятельно?
    Необходимо из строки убрать вообще всё, включая все символы и пробелы и оставить только буквы (и, как вариант+цифры)
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Символы.НПП
    Или же посимвольно проверять на принадлежность к букве/цифре.
    Euronymous нравится это.
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну как вариант - это завести массив либо Символов, которые вас удовлетворяют (), либо массив котрые наоборот не должно быть (смотря каких меньше)
    Массив лучше следать из ASCII кодов данных символов, а затем вырываем из строки по букве, получаем ее код
    Встроенные функции языка.КодСимвола (Script functions.CharCode)
    Встроенные функции языка (Script functions)
    КодСимвола (CharCode)
    Синтаксис:

    КодСимвола(<Строка>, <НомерСимвола>)

    и проверяем в массиве он нашем или нет. ну и соответвенно формируем новую строку добаляя туда этот символ или нет.

    кода мало - самое нудное забить массив, но в инете есть все коды, думаю это работы максимум на час.
    Euronymous нравится это.
  4. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    А при чем тут НПП?) Разве он запятые, точки и скобки может убирать?
    А как можно вырывать по каждому символу из строки? Циклом по СтрДлина?
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Да
    --- Объединение сообщений, 16 дек 2014 ---
    НПП, я убирал символы пробела, когда преобразовывал число в строку.
  6. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    НПП вроде убирает только неразрывный пробел
    --- Объединение сообщений, 16 дек 2014 ---
    Т.к. использоваться будут только цифры и буквы, думаю проще составить массив букв и цифр, чем кодов:)
    Спасибо, буду пробовать:) Жаль встроенного функционала нет...

    P.S. А как быстро можно проверить наличие символа в массиве? Тоже циклом перебирать? о_О
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну у массива и всех остальных типа ТЗ и список есть метод Найти(), его циклом перебирать не надо.
    Смотртие тут есть подвох. Даже два.
    1. Это маленькие и большие буквы. На самом деле это же разные символы. Вы можете в массив занести только большие, а перед проверкой Букву делать в верхний регистр и проверять - так массив можно сократить в два раза.
    2. буквы "а" и "a" - это то же разные т.к одна написана на русской раскладке, другая на анг. вы это то же учтите. а то только массив для русских сделаете. А кто тото забудет переключиться и ....
    Euronymous нравится это.
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а не проще проверять по символьно и в диапазоны кодов загонять? чем составлять массивы и прописывать поиск?
    Euronymous нравится это.
  9. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Спасибо, все это уже предусмотрел и сделал:)
  10. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Не совсем понял про диапазон кодов, поясните плз
  11. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну ряд цифр или ряд букв они по кодовой таблице подряд идут, т. е. будете проверять код символа из вашей строки на вхождение в определенный диапазон
    --- Объединение сообщений, 16 дек 2014 ---
    могу примерчик поискать, на С# делала правда
    Euronymous нравится это.
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну имеется ввиду, почему я вам изначально и предлагал по символам искать, что русский алфафит находится в диапозоне (я уже не помню) ну допустим от 100 жо 132 и вы берете букву, получаете ее символ и проверяете что бы был польше 100 и меньше 132.
    Ну а массив же то же можно заполнить не руками, а циклом

    и=100;
    Пока и<132 Цикл
    массив.добавить(И);
    и=и+1;
    КонецЦикла
    --- Объединение сообщений, 16 дек 2014 ---
    Вот по этому рекомендовал ASCII коды
    --- Объединение сообщений, 16 дек 2014 ---
    С массивом почему удобнее - легче исключения добавлять.
    Euronymous нравится это.
  13. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну еслиб только цифры то да, а весь алфавит да еще и большие малые, это помрешь составлять массив
  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Я имелл ввиду массив изи ASCII символов. - мне кажется он более универсальный чем просто буквы.
    --- Объединение сообщений, 16 дек 2014 ---
    Т.е вот это бы заполнило массив кодами русского алфавита
    и=100;
    Пока и<132 Цикл
    массив.добавить(И);
    и=и+1;
    Конец
  15. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я про него же, про коды символов таблицы АСКИИ в массиве.. на С# я через List вроде делала, и поиском по нему исключала, но у меня мало исключений было
    --- Объединение сообщений, 16 дек 2014 ---
    и список исключений менялся пользователем
  16. TopicStarter Overlay
    Euronymous
    Offline

    Euronymous Опытный в 1С

    Регистрация:
    19 фев 2014
    Сообщения:
    206
    Симпатии:
    0
    Баллы:
    26
    Решил делать через макет, чтобы пользователь сам мог выбрать что ему читать, а что не читать.
    Циклом заполняю массив из макета, но как найти букву в строке по номеру элемента в цикле?
    Например в слове "Краказябла" получить 6ой символ "з"?!
  17. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.558
    Симпатии:
    716
    Баллы:
    204
    Блин...в строку пишешь весь набор символов, которые могут быть. Потом делаешь поиск одного символа в этой строке и думать ничего не надо с массивами....
    Euronymous нравится это.
  18. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.558
    Симпатии:
    716
    Баллы:
    204
    Сиволы в строке перебирашь циклом, используя метод Сред()
  19. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.760
    Симпатии:
    509
    Баллы:
    204
    Это как раз и имелось ввиду, проверять по коду, намного меньше телодвижений, да и список кодов можно корректировать.
  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.558
    Симпатии:
    716
    Баллы:
    204
    С кодами - это надо еще в UTF-8 определить нужное подмножество правильно :)
    alexburn нравится это.

Поделиться этой страницей