Hi all,
I have an array of [1,2,’’] I want change it to [1,2]. I check the
document about Array but I can’t find a way to remove the empty element.
Any comments?
Thanks,
Li
Hi all,
I have an array of [1,2,’’] I want change it to [1,2]. I check the
document about Array but I can’t find a way to remove the empty element.
Any comments?
Thanks,
Li
On 23/10/06, Li Chen [email protected] wrote:
–
Posted via http://www.ruby-forum.com/.
If you only want to get rid of empty strings
array.reject{|element| element.empty?}
If you want to get rid of nils
array.compact
Farrel
On Monday 23 October 2006 14:27, Li Chen wrote:
Hi all,
I have an array of [1,2,’’] I want change it to [1,2]. I check the
document about Array but I can’t find a way to remove the empty element.
Any comments?Thanks,
Li
You can Array#reject! if you want to do it in-place or Array#delete_if
if you
want to capture the non-empty elements on a new Array instance.
Cheers
Ulisses Montenegro
Farrel L. wrote:
On 23/10/06, Li Chen [email protected] wrote:
Hi all,
I have an array of [1,2,‘’] I want change it to [1,2]. I check the
…
If you only want to get rid of empty strings
array.reject{|element| element.empty?}
array.reject{|element| element.empty? rescue false}
Joel VanderWerf wrote:
Farrel L. wrote:
On 23/10/06, Li Chen [email protected] wrote:
Hi all,
I have an array of [1,2,‘’] I want change it to [1,2]. I check the
…
If you only want to get rid of empty strings
array.reject{|element| element.empty?}array.reject{|element| element.empty? rescue false}
Hi Joel,
I come out with my own solution by using a regxp:
a=[1,2,‘’,‘’]
a.delete_if {|x| x=~/$/}
p a
##output
C:\Ruby\self>array3.rb
[1, 2]
Pete Y. wrote:
Your solution is broken. It’ll delete any string from the array:
irb(main):001:0> a = [1, 2, ‘a’, ‘b’]
=> [1, 2, “a”, “b”]
irb(main):002:0> a.delete_if {|x| x =~ /$/}
=> [1, 2]
Hi,
I think this time it should work: regxp for the empty sapce is ^\d*$.
irb(main):003:0> a=[1,2,’’,’’, ‘a’,‘b’]
=> [1, 2, “”, “”, “a”, “b”]
irb(main):004:0> a.delete_if {|x| x=~/^\d*$/}
=> [1, 2, “a”, “b”]
Li
On 24/10/2006, at 4:02 AM, Li Chen wrote:
I come out with my own solution by using a regxp:
a=[1,2,‘’,‘’]
a.delete_if {|x| x=~/$/}
p a
Your solution is broken. It’ll delete any string from the array:
irb(main):001:0> a = [1, 2, ‘a’, ‘b’]
=> [1, 2, “a”, “b”]
irb(main):002:0> a.delete_if {|x| x =~ /$/}
=> [1, 2]
Pete Y.
On 10/23/06, Li Chen [email protected] wrote:
Hi,
I think this time it should work: regxp for the empty sapce is ^\d*$.
irb(main):003:0> a=[1,2,‘’,‘’, ‘a’,‘b’]
=> [1, 2, “”, “”, “a”, “b”]
irb(main):004:0> a.delete_if {|x| x=~/^\d*$/}
=> [1, 2, “a”, “b”]
I’m sorry, isn’t \d used for a digit?
irb(main):006:0> a = [1, ‘’, ‘a’, ‘2’, ‘3456’]
=> [1, “”, “a”, “2”, “3456”]
irb(main):007:0> a.delete_if{|x| x =~ /^\d*$/}
=> [1, “a”]
This one will delete any string that is made of numbers only.
Cheers,
Alvim.
Li Chen wrote:
I have an array of [1,2,’’] I want change it to [1,2]. I check the
document about Array but I can’t find a way to remove the empty element.
Any comments?
How about this?
irb(main):201:0> arr = [1,2,’’]
=> [1, 2, “”]
irb(main):202:0> arr -= [’’]
=> [1, 2]
Pete Y. wrote:
Your solution is broken. It’ll delete any string from the array:
irb(main):001:0> a = [1, 2, ‘a’, ‘b’]
=> [1, 2, “a”, “b”]
irb(main):002:0> a.delete_if {|x| x =~ /$/}
=> [1, 2]
Pete Y.
http://notahat.com/
Thanks! I was beginning to think I was the only one seeing that
behaviour. I feel much better now.
On Tuesday 24 October 2006 00:02, Seth E. wrote:
=> [1, 2]
I am new to the list, and have so far tried to keep myself as a silent
lurker
hidden on the corner, but coming from a Perl background (5+ years) and
seeing
this beautiful piece of code really makes me feel confident about
leaving old
habits and joining the Ruby club.
On 24/10/2006, at 1:02 PM, Seth E. wrote:
=> [1, 2, “”]
irb(main):202:0> arr -= [‘’]
=> [1, 2]
If you just want to delete empty strings (as opposed to strings
containing only whitespace), this would seem the obvious way:
irb(main):003:0> a = [1, 2, ‘’, 3, ‘’]
=> [1, 2, “”, 3, “”]
irb(main):004:0> a.delete ‘’
=> “”
irb(main):005:0> a
=> [1, 2, 3]
If you want to delete any whitespace-only strings as well:
irb(main):002:0> a = [1, 2, ‘’, 3, ’ ']
=> [1, 2, “”, 3, " "]
irb(main):007:0> a.delete_if {|s| s =~ /^\s*$/ }
=> [1, 2, 3]
Pete Y.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs