compare to strings

C

Clint Pidlubny

Hello,

What is the best approach to searching a string for another string?

For instance, I have:

url1 =3D 'http://www.url.com'
url2 =3D 'http://www.url.com/page'

If part of url1 is in url2, like above, I'd like to declare it a
match. I'm sure this happens using a regular expression, but my
experience is limited with them.

The other problem is that I'm not going to be looking for just one
url1, but I have an entire database table full of those to compare to
an entire database table of url2.

Any thoughts on approaching this problem are appreciated.

Thanks
Clint
 
D

dblack

Hi --

Hello,

What is the best approach to searching a string for another string?

For instance, I have:

url1 = 'http://www.url.com'
url2 = 'http://www.url.com/page'

If part of url1 is in url2, like above, I'd like to declare it a
match. I'm sure this happens using a regular expression, but my
experience is limited with them.

The other problem is that I'm not going to be looking for just one
url1, but I have an entire database table full of those to compare to
an entire database table of url2.

Any thoughts on approaching this problem are appreciated.

It's not a complete answer, but in case it helps: String has an
include? method:

url2.include?(url1) => true


David

--
David A. Black ([email protected])
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)

"Ruby for Rails" chapters now available
from Manning Early Access Program! http://www.manning.com/books/black
 
Z

zdennis

Hi --



It's not a complete answer, but in case it helps: String has an
include? method:

url2.include?(url1) => true

Using String#include? is much faster then regexp matching. Here are some
benchmarks. I didn't test this with Oniguruma though, but I su

-- START CODE --
require 'benchmark'

url = "http://www.url.com/"
url2 = "http://www.url.com/page"

Benchmark.bm{ |x|
x.report{ 100000.times { url2.include?( url ) } }
x.report{ 100000.times { url2 =~ /#{url}/ } }
}
-- END CODE ---


Benchmark Windows ruby 1.8.4 (2005-12-24) [i386-mswin32]
C:\source\projects\ruby\strings>ruby temp.rb
user system total real
0.080000 0.000000 0.080000 ( 0.080000)
1.722000 0.130000 1.852000 ( 1.873000)


Benchmark Linux ruby 1.8.4 (2005-12-24) [i686-linux]
zdennis@lima:~$ ruby-1.8.4 temp.rb
user system total real
0.100000 0.000000 0.100000 ( 0.119403)
1.570000 0.040000 1.610000 ( 1.760446)


Benchmark Linux ruby 1.8.3 (2005-06-23) [i486-linux]
zdennis@lima:~$ ruby temp.rb
user system total real
0.160000 0.030000 0.190000 ( 0.209436)
1.720000 0.080000 1.800000 ( 2.021754)


Benchmark Linux ruby 1.8.2 (2005-04-11) [i386-linux]
zdennis@jboss:~$ ruby temp.rb
user system total real
0.000000 0.000000 0.000000 ( 0.246239)
0.000000 0.000000 0.000000 ( 1.401049)


Zach
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,204
Messages
2,571,066
Members
47,673
Latest member
MahaliaPal

Latest Threads

Top