Forçar quebra de linha em string contínua

1,536 views
Skip to first unread message

Diego Budny

unread,
Nov 11, 2008, 1:48:14 PM11/11/08
to rail...@googlegroups.com
Olá,

tenho um problema que gostaria de resolver que é o seguinte, quebrar uma string continua e sem espaços em branco em linhas de até N caracteres.

Exemplo:
forca_quebra("stringmuitograndequedeveriaconterespacosmasquemadigitounaosabedaexistenciadateclaquetemestafuncao",50)
Retornaria um pedaço de 50 caracteres e adicionaria uma quebra de linha ao final destes 50 caracteres.

Existe alguma função que faça isso? O que encontrei de helper foi o word_wrap, mas ele apenas divide se tiver espaços.


--
Att,
Diego Budny

Bruno Azisaka Maciel

unread,
Nov 11, 2008, 1:58:52 PM11/11/08
to rail...@googlegroups.com
Se você estiver usando Rails, pode fazer assim:

word.split(//).in_groups_of(50).map { |w| w.join }.join("\n")

=)

[]s
Bruno Azisaka Maciel

Cássio Marques

unread,
Nov 11, 2008, 2:04:47 PM11/11/08
to rail...@googlegroups.com
Ótima solução Bruno, parabéns :-)

2008/11/11 Bruno Azisaka Maciel <br...@dookie.com.br>



--
If you're writing code and you're not testing it, the code is wrong. I don't care if it does the right thing, and people need to understand this. If it works by accident, you're still wrong.
Bryan Liles - Ruby Hoedown 2008

Estou vendendo um monte de cds (hardcore, metal, pop, etc) http://spreadsheets.google.com/pub?key=pT61KxmNfc8zS0YX8e8JhOw

Diego Budny

unread,
Nov 11, 2008, 2:29:01 PM11/11/08
to rail...@googlegroups.com
Muito obrigado Bruno, muito boa a solução.

2008/11/11 Bruno Azisaka Maciel <br...@dookie.com.br>



--
Att,
Diego Budny

Leandro Camargo

unread,
Nov 11, 2008, 10:04:38 PM11/11/08
to rail...@googlegroups.com
Caso queira apelar para algo Ruby puro, pode fazer:

class String
def chunks(t) # t = tamanho
self.unpack(("a%i" % t) * (self.size / t.to_f).ceil).join("\n")
end
end

a = "stringmuitograndequedeveriaconterespacosmasquemadigitounaosabedaexistenciadateclaquetemestafuncao"
a.chunks(50)

Ou se não quiser mexer no core da String basta usar direto:
a.unpack(("a%i" % 50) * (a.size / 50.0).ceil).join("\n")

Creio ser mais perfomático.

2008/11/11 Diego Budny <die...@gmail.com>:

Shairon Toledo

unread,
Nov 12, 2008, 6:47:48 AM11/12/08
to rail...@googlegroups.com
a = "stringmuitograndequedeveriaconterespacosmasquemadigitounaosabedaexistenciadateclaquetemest
a.scan(/(.{50})|(.+)/).flatten.compact.join("\n")


2008/11/12 Leandro Camargo <leand...@gmail.com>



--
[ ]'s
Shairon Toledo
http://www.hashcode.eti.br

Rodrigo Toledo

unread,
Nov 12, 2008, 6:55:33 AM11/12/08
to rail...@googlegroups.com
Que medo!

2008/11/12 Shairon Toledo <shairon...@gmail.com>

Ramos da Informática

unread,
Nov 12, 2008, 6:57:12 AM11/12/08
to rail...@googlegroups.com
Ao iniciar o servidor dá o seguinte erro, o que pode ser?

"324"
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.2 application starting on http://127.0.0.1:3003
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 127.0.0.1:3003
** Starting Rails with development environment...
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:279:in
`load_missing_constant': uninitialized constant ActionMailer
(NameErrorExiting
)
from
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:468:in
`const_missing'
from
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:480:in
`const_missing'
from C:/Documents and Settings/Ramos/My Documents/Aptana
Studio/premiacao/config/environment.rb:56
from
c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:95:in `run'
from C:/Documents and Settings/Ramos/My Documents/Aptana
Studio/premiacao/config/environment.rb:13
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
from
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in
`require'
... 25 levels...
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
from ./script/server:3
from -e:2:in `load'
from -e:2

Cássio Marques

unread,
Nov 12, 2008, 6:59:21 AM11/12/08
to rail...@googlegroups.com
É só ler o erro...

   from C:/Documents and Settings/Ramos/My Documents/Aptana
Studio/premiacao/config/
environment.rb:56
   from
c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:95:in `run'
   from C:/Documents and Settings/Ramos/My Documents/Aptana
Studio/premiacao/config/environment.rb:13

O que tem nas linhas 13 e 56 do seu environment.rb ?


2008/11/12 Ramos da Informática <ra...@mgt.com.br>

Ramos da Informática

unread,
Nov 12, 2008, 7:04:22 AM11/12/08
to rail...@googlegroups.com
A linha 13 tem: Rails::Initializer.run do |config|

A linha 56 é: :address => "mail.meganet.com.br",

config.action_mailer.delivery_method = :smtp
ActionMailer::Base.server_settings = {
:address => "mail.meganet.com.br",
:port => 25,
:user_name => "ra...@mgt.com.br",
:password => "teste",
:authentication => :login
}

Cássio Marques escreveu:
> É só ler o erro...
>
> from C:/Documents and Settings/Ramos/My Documents/Aptana
> Studio/premiacao/config/
> environment.rb:56
> from
> c:/ruby/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/initializer.rb:95:in `run'
> from C:/Documents and Settings/Ramos/My Documents/Aptana
> Studio/premiacao/config/environment.rb:13
>
> O que tem nas linhas 13 e 56 do seu environment.rb ?
>
>
> 2008/11/12 Ramos da Informática <ra...@mgt.com.br
> <mailto:ra...@mgt.com.br>>
>
>
> Ao iniciar o servidor dá o seguinte erro, o que pode ser?
>
> "324"
> => Booting Mongrel (use 'script/server webrick' to force WEBrick)
> => Rails 2.1.2 application starting on http://127.0.0.1:3003
> => Call with -d to detach
> => Ctrl-C to shutdown server
> ** Starting Mongrel listening at 127.0.0.1:3003
> <http://127.0.0.1:3003>

Cássio Marques

unread,
Nov 12, 2008, 7:11:53 AM11/12/08
to rail...@googlegroups.com
A configuração pro ActionMailer deve estar FORA do bloco Rails::Initializer.run do |config| ... end.
Pega essa parte:

ActionMailer::Base.server_
settings = {
   :address => "mail.meganet.com.br",
   :port => 25,
   :user_name => "ra...@mgt.com.br",
   :password => "teste",
   :authentication => :login }

E coloca no final do seu environment.rb
Reply all
Reply to author
Forward
0 new messages