[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

string comparison

Boris Glawe

12/14/2005 11:36:00 PM

Hi,

I have a class containing a string as an instance variable and I have a local
variable containing a string.

I compare these two strings with '==' and with the .eql? method:

###################################

obj.text = "hello world"
localtext = "hello world"

if obj.text == localtext
then
# do something
end

###################################

The condition never became true in my program. Thus I added some debug output.
This is the the debugging code:

if not obj.text == localtext
then
print "\"#{obj.text}\" is not equal \"localtext\"\n"
end

This is, what it gave me:

"hello world" is not equal "hello world"

It's not worth trying the example above, since it's not the actual code. The
actual code in my project is much more complex, that's why I used this example
to discribe my problem.

Fact is that when the string comparison does not succeed I get an output like

"hello world" is not equal "hello "world"

Now it's your turn... What could cause this behaviour?

thanks and greets

Boris
6 Answers

konsu

12/14/2005 11:47:00 PM

0

hello,

the below code displays 'equal' on my machine:

s0 = "hello world"
s1 = "hello world"
puts 'equal' if s0 == s1

konstantin

Christer Nilsson

12/14/2005 11:57:00 PM

0

You have real diff here:
> "hello world" is not equal "hello "world"

I tried this code.
Behaves as expected, prints equal.

class Obj
attr_accessor :text
end

def test
obj=Obj.new
obj.text="world"
localtext="world"
if obj.text == localtext then
print "equal\n"
else
print "not equal\n"
end
end

test

Isolate the problem, and wrap it in a test/unit. Then I can take a
closer look.

Christer

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


Boris Glawe

12/15/2005 12:23:00 AM

0

> Isolate the problem, and wrap it in a test/unit. Then I can take a
> closer look.
>

The problem was a whitespace, which I did not see. I actually wrapped the output
in apostrophs in order to see whitespaces. Since I am programming with cgi, I
see the output in the browser window, which prints whitespaces very small.

Anyway thanks for the help!!

greets Boris

konsu

12/15/2005 12:43:00 AM

0

you can run your cgi script from a command line thus: 'ruby script.cgi'
just set REQUEST_URI environment variable to set the url.

konstantin

Wilson Bilkovich

12/15/2005 4:20:00 AM

0

On 12/14/05, Boris Glawe <boris@boris-glawe.de> wrote:
> if not obj.text == localtext
> then
> print "\"#{obj.text}\" is not equal \"localtext\"\n"
> end
>
> This is, what it gave me:
>
> "hello world" is not equal "hello world"
>

Just to remove any precedence weirdness, does this behave differently
from your failing code?
puts %Q[#{obj.text} differs from #{localtext}] unless obj.text == localtext


Tom Reilly

12/15/2005 8:13:00 PM

0

You might check to see that obj.text.class is the same as obj.text.class.
Also check the sizes of both. I've been caught by \n which doesn't show up.

Boris Glawe wrote:

> Hi,
>
> I have a class containing a string as an instance variable and I have
> a local variable containing a string.
>
> I compare these two strings with '==' and with the .eql? method:
>
> ###################################
>
> obj.text = "hello world"
> localtext = "hello world"
>
> if obj.text == localtext
> then
> # do something
> end
>
> ###################################
>
> The condition never became true in my program. Thus I added some debug
> output. This is the the debugging code:
>
> if not obj.text == localtext
> then
> print "\"#{obj.text}\" is not equal \"localtext\"\n"
> end
>
> This is, what it gave me:
>
> "hello world" is not equal "hello world"
>
> It's not worth trying the example above, since it's not the actual
> code. The actual code in my project is much more complex, that's why I
> used this example to discribe my problem.
>
> Fact is that when the string comparison does not succeed I get an
> output like
>
> "hello world" is not equal "hello "world"
>
> Now it's your turn... What could cause this behaviour?
>
> thanks and greets
>
> Boris
>
>