pojedynczych cudzysłowów nie przetwarza większość sekwencje. Tak więc, gdy masz ten
'\n'
to dosłownie oznacza „dwa ciąg znaków, gdzie pierwszy znak backslash i drugi znak jest małą literą«n»”. To ma wartość , a nie oznacza "znak nowej linii". Aby \n
oznaczało znak nowej linii, musisz umieścić go w łańcuchu z podwójnym cudzysłowem (który przetwarza sekwencję specjalną). Oto kilka przykładów:
"Remove \n".delete('\n') # => "Remove \n" # doesn't match
'Remove \n'.delete('\n') # => "Remove \\" # see below
'Remove \n'.delete("\n") # => "Remove \\n" # no newline in source string
"Remove \n".delete("\n") # => "Remove " # properly removed
UWAGA że znak backslash w tym konkretnym przykładzie (druga linia, przy użyciu pojedynczego cytowany ciąg w delete
rozmowy) jest po prostu ignorowane, ponieważ specjalnej logiki w sposobie delete
. Więcej informacji znajduje się w dokumencie na stronie String#count. Aby ominąć to, użyj gsub
, na przykład
'Remove \n'.gsub('\n', '') # => "Remove "
Sergio dzięki. Może wiesz, jak mogę przekonwertować wyniki otrzymane z bazy danych, ponieważ myślę, że są traktowane jak w pojedynczych cytatach. – Gediminas
Może wiem. Ale to jest poza zasięgiem :) –