How to split this string by ruby? [closed] - ruby

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I want to split the string from the last underscore. The string as below:
"abc_123_identifier_12345"
the output:
["abc_123_identifier", "12345"]
please tell me if you have same good ideas. Thanks in advance!

Try this:
"abc_123_identifier_12345".split(/_(\d+)$/)
#=> ["abc_123_identifier", "12345"]

a = "abc_123_identifier_12345"
a.rpartition('_') - ['_']
output in console
[22] pry > a = "abc_123_identifier_12345"
=> "abc_123_identifier_12345"
[23] pry > a.rpartition('_') - ['_']
=> ["abc_123_identifier", "12345"]

Looks more like a pattern matching task than a splitting task for me:
[1] pry(main)> /^(.*)_(\d*)$/.match("abc_123_identifier_12345").captures
=> ["abc_123_identifier", "12345"]

Related

Get array of strings from plain string ruby [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I have a string pattern like below,
=> "text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_cha
rt.png"
I want to have to separate url and then string one by one like, the output should be,
> ["text1",
> "http://www.domain.com/experiment_B_setup_diagram_image.png",
> "\n\nExperiments", "text2",
> "http://www.domain.com/experiment_C_setup_diagram_image.png",
> "\nexperiment", "text3",........]
like separate url and its preceeding or succeeding strings as an array...Can somebody help me out?
Try using:
.split(/\s|\n+/)
For example:
text="text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_chart.png"
text.split(/\s|\n/)
Which returns:
["text1", "http://www.domain.com/experiment_B_setup_diagram_image.png", "", "Experiments", "text2", "http://www.domain.com/experiment_C_setup_diagram_image.png", "", "experiment", "text3", "http://www.domain.com/experiment_A_plotted_chart.png"]
As long as you're OK with dropping the line feeds (\n), you can convert them to a space first and then simply split on spaces:
x = "text1 http://www.domain.com/experiment_B_setup_diagram_image.png\n\nExperiments text2 http://www.domain.com/experiment_C_setup_diagram_image.png \nexperiment text3 http://www.domain.com/experiment_A_plotted_chart.png"
x.tr("\n", " ").split(" ")

Regex for price with and comma [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I have "8 560,90 cur.". How do I get the whole number 8560 as integer?
I can split it by comma, and then get [0] as whole number, asked if there's more way to do it.
Here's how I'd do it:
str = "8 560,90 cur."
str.gsub(/[^\d,]/, '').to_i
# => 8560
This removes every character that isn't a digit or a comma, yielding "8560,90", then calls to_i on it, which gives 8560. This will work for any string as long as you want every digit before the first comma to be part of the number, and none after.
"8 560,90 cur.".scan(/(\d*?).+?(\d+,\d\d)/).flatten.join.to_i
# => 8560
"sdwfdsf560,90 cur.".scan(/(\d*?).+?(\d+,\d\d)/).flatten.join.to_i
# => 560

Both single and double quotes in a ruby array [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I have an array with string values:
a = ["Customer name", "Address", "Qualification"]
Requirement is to make these string values enclosed in both single and double quotes like this:
a = ["'Customer name'", "'Address'", "'Qualification'"]
How can I achieve this?
a = ["Customer name", "Address", "Qualification"]
a.map { |i| "'#{i}'" } # => ["'Customer name'", "'Address'", "'Qualification'"]
It makes sense to say that you want to enclose the content of each string with single quotes, but it does not make sense to say that you want to have double quotes around it, that is part of the literal. But anyway,
a.map{|s| "'#{s}'"}
# => ["'Customer name'", "'Address'", "'Qualification'"]

Finding alphanumeric using ruby [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
New to this forum.
Trying to run a test to find â or €
Using assertion
text.include? "â" , "€"
But getting errors.
Try:
text.include?("â") || text.include?("€")
OR:
/â|€/.match(text)
I would do it this way, since the include? method does not take an array:
['â', '€'].any? { |char| text.include?(char) }
I assume you're using minitest? You can use assert_match:
assert_match(/[â€]/, "text with â")
#=> true
assert_match(/[â€]/, "text with €")
#=> true
assert_match(/[â€]/, "text without")
#=> MiniTest::Assertion: Expected /[â€]/ to match "text without".

Not able to find a particular regex in ruby [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
Improve this question
This is my regex /(.+)(\.|::)(\S+)\Z/. User enter function.[] Output $1 as function and $3 as []user enter function[] output nil The desired output is $1 as function and $3 as [].
Any guesses how can I alter the above regex to do this.
Call the match method to set $1 and $3:
/(\w+)(\.|::)?(\S+)\Z/.match('mongo.[]')
$1 # => mongo
$3 # => []
/(\w+)(\.|::)?(\S+)\Z/.match('mongo[]')
$1 # => mongo
$3 # => []
Are you looking for /(.+)(\.|::)*(\S+)\Z/?
The asterisk that I added means zero or more.
Or /(.+)(\.|::)?(\S+)\Z/,
The question mark means zero or one.

Resources