Viết hoa mỗi ký tự thứ n của mỗi từ trong một chuỗi trong Ruby

Sergi

New Member
#1
Mình cần viết hoa mỗi ký tự 'n' cho mỗi từ trong một chuỗi (bội số của ký tự thứ 4 trong ví dụ này, vì vậy ký tự 4, 8, 12 v.v.).
Mình đã đưa ra code bên dưới. Nhưng nó chỉ hoạt động cho các từ có length < 8.
Mã:
'capitalize every fourth character in this string'.split(' ').map do |word|
  word.split('').map.with_index do |l,idx|
  idx % 3 == 0 && idx > 0 ? word[idx].upcase : l
  end
  .join('')
end
.flatten.join(' ')
Cảm ơn!
 

Admin

Administrator
Thành viên BQT
#2
Bạn có thể thử:
Mã:
str = 'capitalize every fourth character in this string'

idx = 0
str.gsub(/./) do |c|
  case c
  when ' '
    idx = 0
    c
  else
    idx += 1
    (idx % 4).zero? ? c.upcase : c
  end
end
  #=> "capItalIze eveRy fouRth chaRactEr in thiS strIng"
 
OP
OP
S

Sergi

New Member
#3
Câu trả lời hay, mình chưa từng thấy .gsub() được sử dụng theo cách đó.
 
Top