我99%肯定以前没有问过这个问题,所以就这么说了。
假设我们有一个字符串数组
strings = ['first string', 'second string', 'third string']
我想创建一个新的海量数组,用三个非空白字符(字母,数字,符号)代替三个元素中的空格字符。
它看起来像这样。
new_array = ['firstastring', 'secondastring', 'thirdastring', 'firstbstring', ..
'first1string', 'seond1string', .. 'third^string', ...]
新数组的计数应该是原始数组中的元素数(3)乘以Ruby中的非空白字符数
一个可能的解决方案是
new_array = []
/[\S]/.each do |character|
strings.each do |string|
new_array.gsub(string, character)
end
end
我在正则表达式中理解\ S表达式指的是任何非空白字符,所以我认为这是最好用的。
我仍然是Ruby的初学者,所以我感谢任何帮助。
根据我对Ruby的理解,解决方案很可能涉及每个循环。
更新 对不起,看起来你不能在正则表达式类上调用每个方法。我有另一个想法。
characters_array = (0..9).to_a.map(&:to_s) + ('a'..'z').to_a + ('A'..'Z').to_a +
["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "+", "=", "`", "~",
":", ";", ",", ".", "?", "/"]
new_array = []
characters_array.each do |character|
strings.each do |string|
new_array.gsub(string, character)
end
end
这只是一个想法。
答案 0 :(得分:1)
这就是你如何做到的:
strings = ['first string', 'second string', 'third str ing']
subs = %w[0 a ^]
#=> ["0", "a", "^"]
strings.product(subs).map { |e,c| e.gsub(/\s/,c) }
#=> ["first0string", "firstastring", "first^string",
# "second0string", "secondastring", "second^string",
# "third0str0ing", "thirdastraing", "third^str^ing"]
或
subs.product(strings).map { |c,e| e.gsub(/\s/,c) }
#=> ["first0string", "second0string", "third0str0ing",
# "firstastring", "secondastring", "thirdastraing",
# "first^string", "second^string", "third^str^ing"]
取决于您喜欢的顺序。
答案 1 :(得分:1)