Хобрук: Ваш путь к мастерству в программировании

ruby разделить строку на несколько строк фиксированной длины

Мне было интересно, можно ли разбить строку на несколько разделов разной длины. Я хотел бы разделить эту строку, например:

string = "1 name lastname       234   washington city/NY"

на четыре подстроки, где:

  • 1-й раздел должен иметь 1-й 2 символа ("1 ")
  • 2-й раздел будет иметь последующие 15 символов ("name lastname ")
  • 3-й раздел, чтобы иметь последующие 6 символов ("234 ")
  • 4-й раздел, чтобы иметь последующие 20 символов ("washington city/NY")
27.10.2013

  • Пожалуйста, покажите нам свои настоящие строки и то, что вы хотите сделать. 28.10.2013
  • Покажите нам код, который вы написали, когда пытались решить эту проблему самостоятельно. Похоже, вы просите нас написать это для вас. Вопросы по коду должны демонстрировать минимальное понимание решаемой проблемы. Включите предпринятые решения, почему они не сработали и ожидаемые результаты. См. также: контрольный список вопросов о переполнении стека 28.10.2013
  • вверху на самом деле настоящая строка :) 28.10.2013
  • Дорогой @Tin Man, большое спасибо за длинное и бесполезное сообщение. Тот факт, что я не показываю никакой работы, не дает вам права предполагать, что я не работал над решением этой проблемы до публикации. Я просто даже не понял, как подойти к этой проблеме, так как я никогда не использовал регулярные выражения с таким количеством критериев. Вы, наверное, видели, что я уже принял ответ от хорошего парня, который потратил, наверное, 30 секунд, печатая ответ на мой вопрос. легко помочь людям, которые хотят учиться, не так ли? 28.10.2013
  • Уважаемый пользователь 2925006. Пожалуйста, успокойтесь и не принимайте комментарий Жестянщика на свой счет. Он просто сообщает вам правила, подробно описанные в FAQ. Пожалуйста, воздержитесь от разглагольствований, пока вы не завоюете уважение сообщества, о чем свидетельствует ваша репутация. 28.10.2013

Ответы:


1

вы делаете это просто путем индексации:

string[0,2]
string[4,15]
stirng[20,6]
string[27,20]
27.10.2013
  • Будьте здоровы! не знал, что вы можете сделать это таким образом. думал, что мне нужно либо использовать методы сканирования, либо методы разделения, и не знал, как комбинировать регулярное выражение 28.10.2013
  • Просто помните, что это не будет работать для 2345 вашингтон-сити/Нью-Йорк. 28.10.2013

  • 2

    Написать Regexp не так уж сложно. свободный интервал режим позволяет писать шаблон на нескольких строках и поддерживает комментарии. Вот пример с именованными группами захвата:

    string = "1 name lastname       234   washington city/NY"
    
    pattern = /\A
      (?<id>.{2})    # 2 charcters for the id
      (?<name>.{20}) # 20 characters for the name
      (?<zip>.{6})   # 6 characters for the zip code
      (?<city>.+)    # remaining characters for city and state
    \Z/x
    
    match = string.match(pattern)
    #=> #<MatchData "1 name lastname       234   washington city/NY" id:"1 " name:"name lastname       " zip:"234   " city:"washington city/NY">
    
    match[:id]   #=> "1 "
    match[:name] #=> "name lastname       "
    match[:zip]  #=> "234   "
    match[:city] #=> "washington city/NY"
    
    28.10.2013
  • Большое спасибо, это помогает даже больше! 28.10.2013
  • Новые материалы

    Как я могу подписаться на тему изображений в ROS Matlab и получить изображение RGB?
    Привет, Пожалуйста, как я могу извлечь изображение из сообщения ROS Image, за которым следует imshow? Я уже подписался на правильную тему, но message.getData() дает мне объект..

    Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
    Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

    Как интегрировать модель машинного обучения на ios с помощью CoreMl
    С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..