|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi,
I want to replace all occurences of a certain character in a string with a backslash followed by a single quote. Sounds like a trivial task, but this is what I get: "this is a test".gsub( "a", "\\'" ) -> "this is test test" What I want is "this is \' test". Neither does this work: "this is a test".gsub( "a", '\' + "'" ) No matter what I am doing, as soon as a backslash is followed by a single quote in the replacement string, I am getting weird results. Thanks for your ! Andreas |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
ridcully wrote:
> Hi, > > I want to replace all occurences of a certain character in a string > with a backslash followed by a single quote. Sounds like a trivial > task, but this is what I get: > > "this is a test".gsub( "a", "\\'" ) -> "this is test test" > > What I want is "this is \' test". > > Neither does this work: > "this is a test".gsub( "a", '\' + "'" ) > > No matter what I am doing, as soon as a backslash is followed by a > single quote in the replacement string, I am getting weird results. Backslashes are confusing. Try this: puts "this is a test".gsub( "a", "\\\\'" ) -- Alex |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On 17 Nov., 12:22, Alex Young <a...@blackkettle.org> wrote:
> Backslashes are confusing. Try this: > > puts "this is a test".gsub( "a", "\\\\'" ) > > -- > Alex Thank you, you saved my day! This really is confusing, because "\\'" gives me the correct result if I don't use it with gsub: puts "\\'" -> \' Am I missing something here? Andreas |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
ridcully wrote:
> On 17 Nov., 12:22, Alex Young <a...@blackkettle.org> wrote: > > puts "this is a test".gsub( "a", "\\\\'" ) > > Thank you, you saved my day! > > This really is confusing, because "\\'" gives me the correct result if > I don't use it with gsub: > > puts "\\'" -> \' > > Am I missing something here? "\\'" translates to a literal backslash followed by '. This is what gsub gets. gsub then sees \' and replaces it with $' the same way it would replace \1 with $1. To tell it not to do that it has to get \\', so it knows it's not supposed to treat \' as special. In order to archieve that you have to write "\\\\'". Hope that cleared things up for you. -- NP: Falkenbach - Vanadis Jabber: sepp2k@jabber.org ICQ: 205544826 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Nov 17, 2007 7:20 PM, ridcully <google@ridcully.net> wrote:
> "this is a test".gsub( "a", "\\'" ) -> "this is test test" many ways, eg ~> "this is a test".gsub("i",Regexp.escape("\\'")) => "th\\'s \\'s a test" ~> "this is a test".gsub("i"){"\\'"} => "th\\'s \\'s a test" the block form seems clean though. kind regards -botp |
|
![]() |
| Outils de la discussion | |
|
|