Расщепление строк в рубине - PullRequest
0 голосов
/ 17 мая 2011

Я хочу разбить строку:

"00 85 00 04 79 E5 0B B5 82 AE C7 C9 96 37 93 AE"

на две маленькие строки, например:

string1 => "00 85 00 04"
string2 => "79 E5 0B B5 82 AE C7 C9 96 37 93 AE"

Я пытался использовать массивы, но хотел бы попробовать что-то новое.

Ответы [ 4 ]

4 голосов
/ 17 мая 2011

Вам не нужно split здесь.

sample_string = "00 85 00 04 79 E5 0B B5 82 AE C7 C9 96 37 93 AE"
string1, string2 = sample_string[0, 11], sample_string[12..-1]
string1
#=> "00 85 00 04"
string2
#=> "79 E5 0B B5 82 AE C7 C9 96 37 93 AE"

Но не ясно, какой «шаблон» вы хотите использовать для обрезки исходной строки.

1 голос
/ 17 мая 2011

Отличное место с множеством примеров на всевозможных языках, таких как, python, perl, ruby ​​и др. pleac ruby ​​string section .

«Великолепно» то, что все разные языки решают одни и те же проблемы, облегчая сравнение решений между языками.

0 голосов
/ 17 мая 2011

Очевидно, что ваше разделение будет основано на интерпретированном содержимом строки, и, поскольку оно выглядит числовым, я бы предложил сначала преобразовать его в массив и работать непосредственно с реальными данными, а не с их строковым представлением.

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

s.split(/\b *(?=79)\b/)
0 голосов
/ 17 мая 2011

Ответ на этот вопрос зависит от другой информации, которую вы можете предоставить: первая строка известной длины?Что концептуально определяет, где вы хотите, чтобы произошло разделение.

В вашем примере вы можете сделать:

s = "00 85 00 04 79 E5 0B B5 82 AE C7 C9 96 37 93 AE"

l = s.split("04")

str0 = l[0] + "04"
str1 = l[1]

Или вы можете нарезать, как вы могли бы массив / список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...