Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Substring like in PHP's substr()? (http://www.velocityreviews.com/forums/t839712-substring-like-in-phps-substr.html)

Joshua Muheim 04-09-2007 11:52 AM

Substring like in PHP's substr()?
 
Hi all

I'm looking for the coolest way to get the substring

/Webwork/pgbookings

out of

/Users/Josh/Webwork/pgbookings

The part /Users/Josh is saved in the variable my_var.

In PHP I would do something like the following:

substr(/Users/Josh/Webwork/pgbookings, strlen(my_var)) # =>
/Webwork/pgbookings

What's the fastest way to do this in Ruby? :-)
Josh

--
Posted via http://www.ruby-forum.com/.


James Edward Gray II 04-09-2007 12:03 PM

Re: Substring like in PHP's substr()?
 
On Apr 9, 2007, at 6:52 AM, Joshua Muheim wrote:

> Hi all
>
> I'm looking for the coolest way to get the substring
>
> /Webwork/pgbookings
>
> out of
>
> /Users/Josh/Webwork/pgbookings
>
> The part /Users/Josh is saved in the variable my_var.
>
> In PHP I would do something like the following:
>
> substr(/Users/Josh/Webwork/pgbookings, strlen(my_var)) # =>
> /Webwork/pgbookings
>
> What's the fastest way to do this in Ruby? :-)


I'm not sure which way is faster, so let's ask Ruby to time some of
my ideas:

#!/usr/bin/env ruby -w

require "benchmark"

data = "/Users/Josh/Webwork/pgbookings"
prefix = "/Webwork/pgbookings"

TESTS = 1_000_000
Benchmark.bmbm do |results|
results.report("[i..-i]:") { TESTS.times { data
[prefix.length..-1] } }
results.report("[i, l]:") { TESTS.times { data[prefix.length,
data.length] } }
results.report("sub():") { TESTS.times { data.sub(/\A#{prefix}/,
"") } }
results.report("[re, c]:") { TESTS.times { data[/\A#{prefix}(.+)/,
1] } }
end
# >> Rehearsal --------------------------------------------
# >> [i..-i]: 2.500000 0.000000 2.500000 ( 2.511868)
# >> [i, l]: 0.630000 0.000000 0.630000 ( 0.634460)
# >> sub(): 6.800000 0.020000 6.820000 ( 6.850561)
# >> [re, c]: 7.180000 0.010000 7.190000 ( 7.204910)
# >> ---------------------------------- total: 17.140000sec
# >>
# >> user system total real
# >> [i..-i]: 2.500000 0.000000 2.500000 ( 2.500795)
# >> [i, l]: 0.630000 0.010000 0.640000 ( 0.633458)
# >> sub(): 6.840000 0.000000 6.840000 ( 6.853133)
# >> [re, c]: 7.110000 0.010000 7.120000 ( 7.130398)

__END__

Hope that helps.

James Edward Gray II


Jamal Soueidan 04-09-2007 12:26 PM

Re: Substring like in PHP's substr()?
 
James Gray wrote:
> On Apr 9, 2007, at 6:52 AM, Joshua Muheim wrote:


Looks COOL... :D


--
Posted via http://www.ruby-forum.com/.


Rick DeNatale 04-09-2007 01:33 PM

Re: Substring like in PHP's substr()?
 
On 4/9/07, James Edward Gray II <james@grayproductions.net> wrote:
>
> data = "/Users/Josh/Webwork/pgbookings"
> prefix = "/Webwork/pgbookings"


I think you meant
prefix = "/Users/Josh"

This doesn't affect the qualitative results of the benchmark but it
does change it to do what the OP was trying to do.

Note that "/Webwork/pgbookings" is NOT a prefix of
"/Users/Josh/Webwork/pgbookings"

And cosmetically there's a typo:

> results.report("[i..-i]:") { TESTS.times { data
> [prefix.length..-1] } }


should be:

results.report("[i..-1:") { TESTS.times { data[prefix.length..-1] } }

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/


James Edward Gray II 04-09-2007 02:06 PM

Re: Substring like in PHP's substr()?
 
On Apr 9, 2007, at 8:33 AM, Rick DeNatale wrote:

> On 4/9/07, James Edward Gray II <james@grayproductions.net> wrote:
>>
>> data = "/Users/Josh/Webwork/pgbookings"
>> prefix = "/Webwork/pgbookings"

>
> I think you meant
> prefix = "/Users/Josh"
>
> This doesn't affect the qualitative results of the benchmark but it
> does change it to do what the OP was trying to do.


Oops, I did. Thank you.

> And cosmetically there's a typo:
>
>> results.report("[i..-i]:") { TESTS.times { data
>> [prefix.length..-1] } }

>
> should be:
>
> results.report("[i..-1:") { TESTS.times { data
> [prefix.length..-1] } }


Yeah, I blew that one, didn't I?

Thanks for the corrections.

James Edward Gray II


Joshua Muheim 04-09-2007 02:10 PM

Re: Substring like in PHP's substr()?
 
Thank you guys. :-)

--
Posted via http://www.ruby-forum.com/.



All times are GMT. The time now is 08:51 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.