我通过<<
在循环中使用运算符准备了一个巨大的字符串。最后我想删除最后 2 个字符。
some_loop
str << something
end
str = str[0..-3]
我认为上面的最后一个操作也会消耗内存和时间,但我不确定。我只是想看看是否有相反效果的操作, <<
所以我可以从同一个字符串中删除最后两个字符。
事实上,字符串切片已经是一种快速且节省内存的操作,因为直到真正需要时才复制字符串内容。
请参阅“ Seeing double: Ruby 如何共享字符串值”中的详细说明。
请注意,这是对字符串操作的某种经典优化;你在 java 中也有它,我们经常在 C 中使用类似的技巧。
所以,不要犹豫:
str = str[0..-3]
这是正确、推荐和有效的方法,前提是您确实必须删除这些字符,请参阅 Sergio 的回答。
您是否有机会使用分隔符连接一些数组元素?像这样的东西?
names = ['Mary', 'John', 'Dave']
res = ''
names.each do |n|
res << n << ', '
end
res # => 'Mary, John, Dave, '
如果是,那么有更简单的路径。
names.join(', ') # => 'Mary, John, Dave'
如果最后两个字符是换行符/换行符 (CR/LF),您可以使用String.chomp
(或者String#chomp!
如果您想修改字符串)。
否则你可以使用:
2.times{ string.chop! }
或者
string.chop!
string.chop!