代码之家  ›  专栏  ›  技术社区  ›  Cimm

在Ruby中每x个字符添加一个字符

  •  1
  • Cimm  · 技术社区  · 15 年前

    我想在我的RubyonRails字符串(类似于 <wbr> 在HTML中)。

    能告诉Ruby添加字符吗 x y 每个 z 字符?

    4 回复  |  直到 13 年前
        1
  •  8
  •   Tim Pietzcker    15 年前

    尝试

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

    替换您要替换的号码 10 以及您想要的替换字符串 XX

        2
  •  1
  •   Niels Castle    15 年前

    在Perl中,它将位于 s/(\w{42})/$1\n/g

        3
  •  0
  •   Beanish    15 年前

    我不熟悉Rails,但在纯Ruby中,您可以自己编写。不知道你为了这样的事情放弃了多少速度,如果有的话。

    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
    
        4
  •  0
  •   rampion    15 年前

    如果原始字符串是 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')