String with \


#1

Hi all

string = “abc/ def/ ghi/”

how to get all three of these dynamic values placed before backslash in
separate variables.
any suggestitons??

cheers


#2

Vrone Ve wrote:

Hi all

string = “abc/ def/ ghi/”

how to get all three of these dynamic values placed before backslash in
separate variables.
any suggestitons??

http://www.ruby-doc.org/docs/ProgrammingRuby/

Look at String#split, i.e. the split method of the String class


#3

On Wed, Dec 3, 2008 at 10:12 AM, Vrone Ve removed_email_address@domain.invalid wrote:

Hi all

string = “abc/ def/ ghi/”

how to get all three of these dynamic values placed before backslash in
separate variables.
any suggestitons??

See String#split and String#strip.

Regards,
Craig


#4

On Dec 3, 2008, at 10:12 AM, Vrone Ve wrote:

cheers
irb> string = “abc/ def/ ghi/”
=> “abc/ def/ ghi/”
irb> string.split(%r{/\s*})
=> [“abc”, “def”, “ghi”]

You could use parallel assignment, but I’d question whether you really
wanted three variables rather than a three-element array.

a, d, g = string.split(%r{/\s*})

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#5

Rob B. wrote:

On Dec 3, 2008, at 10:12 AM, Vrone Ve wrote:

cheers
irb> string = “abc/ def/ ghi/”
=> “abc/ def/ ghi/”
irb> string.split(%r{/\s*})
=> [“abc”, “def”, “ghi”]

You could use parallel assignment, but I’d question whether you really
wanted three variables rather than a three-element array.

a, d, g = string.split(%r{/\s*})

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid

thanks Rob,

My detailed question is regarding a string something like
String "ABC\Name X\Gender "
and I want to scan the string for each of the element(i.e. Name, Gender)
and whereever Name is written in the string, I want to grab the value
placed before the back slash and store it in a variable. same is the
case with gender and/or with any other attribute i want to be in this
string.

Cheers


#6

Vrone Ve wrote:

Rob B. wrote:

On Dec 3, 2008, at 10:12 AM, Vrone Ve wrote:

cheers
irb> string = “abc/ def/ ghi/”
=> “abc/ def/ ghi/”
irb> string.split(%r{/\s*})
=> [“abc”, “def”, “ghi”]

You could use parallel assignment, but I’d question whether you really
wanted three variables rather than a three-element array.

a, d, g = string.split(%r{/\s*})

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid

thanks Rob, and all for your response

My detailed question is regarding a string something like
String "ABC\Name X\Gender "
and I want to scan the string for each of the element(i.e. Name, Gender)
and whereever Name is written in the string, I want to grab the value
placed before the back slash and store it in a variable. same is the
case with gender and/or with any other attribute i want to be in this
string.

Your help required.
cheers


#7

On Dec 3, 2008, at 10:52 AM, Vrone Ve wrote:

really
thanks Rob,
Cheers
Then I presume you want a transformation something like:

magic(“ABC\Name X\Gender”)
=> [[“Name”, “ABC”], [“Gender”, “X”]]
or
=> { “Name” => “ABC”, “Gender” => “X” }

You can then manipulate the alist or hash (key-value pairs) as you
wish. (for the alist, “association list”, you can use the Array#assoc
method)

Depending on where whitespace is permitted in the original string, you
might be able to:

irb> “ABC\Name X\Gender”.split(’ ').map{|pair| pair.split(/
/).reverse }
=> [[“Name”, “ABC”], [“Gender”, “X”]]

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#8

What if There is some optional value which may appear in strings
oftenly, and i want to check against its attribute value. or in other
words its not necesary to have Name with its value every time in the
string, and i want to have some checks on it ( e.g if Name attribute is
there then grab its value before the back slash, then moving along all
other attributes and chk there occurance take their value)

thanks again


#9

On Dec 3, 2008, at 12:49 PM, Vrone Ve wrote:

What if There is some optional value which may appear in strings
oftenly, and i want to check against its attribute value. or in other
words its not necesary to have Name with its value every time in the
string, and i want to have some checks on it ( e.g if Name attribute
is
there then grab its value before the back slash, then moving along all
other attributes and chk there occurance take their value)

thanks again

irb> "ABC\Name X\Gender Z\Person ".scan(/([^\]+)\(\w+)\s?/)
=> [[“ABC”, “Name”], [“X”, “Gender”], [“Z”, “Person”]]
irb> alist = _
=> [[“ABC”, “Name”], [“X”, “Gender”], [“Z”, “Person”]]
irb> alist.rassoc(‘Name’)
=> [“ABC”, “Name”]
irb> alist.rassoc(‘Person’)
=> [“Z”, “Person”]
irb> alist.rassoc(‘Optional’)
=> nil

If you still can’t figure it out, either hire someone or at least post
your actual problem with some real data. Even a little code fragment
that you think is close, but perhaps misbehaving in a few cases.
Showing those cases as tests would be even better. :wink:

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#10

Vrone Ve wrote:

Vrone Ve wrote:

Rob B. wrote:

On Dec 3, 2008, at 10:12 AM, Vrone Ve wrote:

cheers
irb> string = “abc/ def/ ghi/”
=> “abc/ def/ ghi/”
irb> string.split(%r{/\s*})
=> [“abc”, “def”, “ghi”]

You could use parallel assignment, but I’d question whether you really
wanted three variables rather than a three-element array.

a, d, g = string.split(%r{/\s*})

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid

thanks Rob, and all for your response

My detailed question is regarding a string something like
String "ABC\Name X\Gender "
and I want to scan the string for each of the element(i.e. Name, Gender)
and whereever Name is written in the string, I want to grab the value
placed before the back slash and store it in a variable. same is the
case with gender and/or with any other attribute i want to be in this
string.

Your help required.
cheers

rather then split, I believe you want scan.

irb(main):032:0> str = 'ABC\Name X\Gender Z\Person ’
=> "ABC\Name X\Gender Z\Person "
irb(main):033:0> str.scan(/(.*?)\\w+\s?/)
=> [[“ABC”], [“X”], [“Z”]]

irb(main):034:0> t = str.scan(/(.*?)\\w+\s?/)
=> [[“ABC”], [“X”], [“Z”]]
irb(main):035:0> t
=> [[“ABC”], [“X”], [“Z”]]