Respostas:
Você precisa usar "\n"
não '\n'
em sua gsub. As diferentes marcas de aspas se comportam de maneira diferente.
As aspas duplas "
permitem expansão de caracteres e interpolação de expressões, ou seja. eles permitem que você use caracteres de controle de escape \n
para representar seu verdadeiro valor, neste caso, nova linha , e permitem o uso de #{expression}
para que você possa tecer variáveis e, bem, praticamente qualquer expressão ruby que você quiser no texto.
Enquanto, por outro lado, as aspas simples '
tratam a string literalmente, então não há expansão, substituição, interpolação ou o que quer que seja.
Nesse caso específico, é melhor usar o método .delete
ou .tr
String para excluir as novas linhas .
tr
é a melhor escolha para essa tarefa, mas, como disse, achei melhor apontar a diferença entre aspas simples e duplas quando respondi.
Quando você quiser remover uma string, em vez de substituí-la, você pode usar String#delete
(ou seu equivalente mutador String#delete!
), por exemplo:
x = "foo\nfoo"
x.delete!("\n")
x
agora é igual a "foofoo"
Neste caso específico, String#delete
é mais legível do que gsub
porque você não está realmente substituindo a string por nada.
delete
não é destrutivo como indicado aqui. Ele retorna uma nova string.
Se você quiser ou não se importar em ter todos os espaços em branco à esquerda e à direita de sua string removidos, você pode usar o strip
método.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
conforme mencionado aqui .
editar O título original desta questão era diferente. Minha resposta é para a pergunta original.
strip
remove apenas os espaços em branco à esquerda e à direita: ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
Você não precisa de um regex para isso. Use tr:
"some text\nandsomemore".tr("\n","")
replace
apenas muda a string para uma nova, como atribuição de variável; enquanto tr
é um localizar e substituir global caractere por caractere.
uso chomp
ou strip
funções do Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
remove apenas espaços em branco à esquerda e à direita - ruby-doc.org/core-1.9.3/String.html#method-i-strip-21