Добавьте символ каждый х символов в Ruby - PullRequest
1 голос
/ 14 января 2010

Я хотел бы разбить длинное слово в моей строке Ruby on Rails (что-то вроде <wbr> в HTML).

Можно ли сказать Ruby добавить символ x в строку y каждый z символов?

Ответы [ 4 ]

8 голосов
/ 14 января 2010

Попробуйте

result = subject.gsub(/(.{10})/m, '\1XX')

с заменой числа, которое вы хотите 10, и строки замены, которую вы хотите XX

1 голос
/ 14 января 2010

В Perl это было бы где-то вроде s/(\w{42})/$1\n/g

0 голосов
/ 14 января 2010

Если ваша исходная строка str = "0123456789abcde" и вы хотите:

  • 01234XXX56789XXXabcdeXXX :: использовать str.gsub(/.{5}/, '\&XXX')
  • 01234XXX56789XXXabcde :: использовать str.scan(/.{5}/).join('XXX')

Они будут немного отличаться от str = "012345678abcdef"

  • 01234XXX56789XXXabcdeXXXf :: от str.gsub(/.{5}/, '\&XXX')
  • 01234XXX56789XXXabcde :: от str.scan(/.{5}/).join('XXX')
  • 01234XXX56789XXXabcdeXXXfXXX :: от str.gsub(/.{1,5}/, '\&XXX')
  • 01234XXX56789XXXabcdeXXXf :: от str.scan(/.{1,5}/).join('XXX')
0 голосов
/ 14 января 2010

Я не знаком с рельсами, но в чистом рубине вы всегда можете написать свой собственный. Не знаю, сколько скорости вы отдаете за что-то подобное, если таковое имеется.

def addcharacter(num, char, string)
 x = 0
 resultstring = ""
 string.each_byte do |byte|
   resultstring << byte.chr
   x += 1
   if x == num
   resultstring << char
   x = 0
   end

 end

   return resultstring
 end

 mystring = "hello there"

 a = addcharacter(2,"*",mystring)
 puts a
...