# Separate a string of values into an array - noob

**URL:** <https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369>\
**Category:** Ruby\
**Created:** [June 16, 2009, 5:50pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369 "2009-06-16T17:50:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mmcolli00](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@mmcolli00](https://www.ruby-forum.com/u/mmcolli00)\
**Post date:** [June 16, 2009, 5:50pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369/1 "2009-06-16T17:50:14Z")

</div>

Hi. I am don’t understand how to separate my string of filenames into an  
array. For example, arrayDiscrep[0] outputs the whole array when I need  
it to only output the first element at index 0 which would be filename:  
234234. Do you know how I can separate each filename for the array?  
Thanks MC

I have this directory of filenames.  
234234.EXE 234234.EXE 234545.EXE 34543435.EXE 234563.EXE 24324345.EXE…

Dir[“C:/DiscrepancyFiles/\*EXE”].each do |disFile|  
stringDisFile = File.basename(disFile).gsub(“EXE,”")

arrayDiscrep = Array.new  
arrayDiscrep = stringDisFile.to\_a  
puts arrayDiscrep[0]  
end

---

<div class="post-metadata">

**Author:** ![mmcolli00](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@mmcolli00](https://www.ruby-forum.com/u/mmcolli00)\
**Post date:** [June 16, 2009, 6:45pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369/2 "2009-06-16T18:45:12Z")

</div>

Mmcolli00 Mom wrote:

> Hi. I am don’t understand how to separate my string of filenames into an  
> array. For example, arrayDiscrep[0] outputs the whole array when I need  
> it to only output the first element at index 0 which would be filename:  
> 234234. Do you know how I can separate each filename for the array?  
> Thanks MC
> 
> I have this directory of filenames.  
> 234234.EXE 234234.EXE 234545.EXE 34543435.EXE 234563.EXE 24324345.EXE…
> 
> Dir[“C:/DiscrepancyFiles/\*EXE”].each do |disFile|  
> stringDisFile = File.basename(disFile).gsub(“EXE,”")
> 
> arrayDiscrep = Array.new  
> arrayDiscrep = stringDisFile.to\_a  
> puts arrayDiscrep[0]  
> end

Everything between the "each"and “end” is a loop, so you are making a  
new array for each file.

File.basename has a nice feature; if you specify a suffix it is removed.

ar = Dir[“C:/DiscrepancyFiles/\*EXE”].map do |dis\_file|  
File.basename(dis\_file, “.exe”)  
end  
puts ar[0]

hth,

Siep

---

<div class="post-metadata">

**Author:** ![mmcolli00](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@mmcolli00](https://www.ruby-forum.com/u/mmcolli00)\
**Post date:** [June 16, 2009, 9:50pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369/3 "2009-06-16T21:50:27Z")

</div>

Cool it worked! Thanks Siep!  
-MC

---

<div class="post-metadata">

**Author:** ![mmcolli00](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@mmcolli00](https://www.ruby-forum.com/u/mmcolli00)\
**Post date:** [June 16, 2009, 11:13pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369/4 "2009-06-16T23:13:28Z")

</div>

Siep

> ar = Dir[“C:/DiscrepancyFiles/\*EXE”].map do |dis\_file|  
> File.basename(dis\_file, “.exe”)  
> end  
> puts ar[0]
> 
> hth,
> 
> Siep

What if it weren’t coming from a directory could you still you .map?  
-Misty

---

<div class="post-metadata">

**Author:** ![mmcolli00](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@mmcolli00](https://www.ruby-forum.com/u/mmcolli00)\
**Post date:** [June 16, 2009, 11:36pm UTC](https://www.ruby-forum.com/t/separate-a-string-of-values-into-an-array-noob/170369/5 "2009-06-16T23:36:54Z")

</div>

Mmcolli00 Mom wrote:

> What if it weren’t coming from a directory could you still you .map?  
> -Misty

The way to do this depends on what the input is, if not a directory?

I don’t know how you’d get this input, but let’s say you have a string:

input = “234234.EXE 234234.EXE 234545.EXE 34543435.EXE 234563.EXE  
24324345.EXE”

tokens = input.split(’ ‘)  
first\_token = tokens.first  
remove\_suffix = first\_token.split(’.’).first

# Or all in one line if you like:

input.split(’ ‘).first.split(’.’).first

There are a variety of other ways to do ‘this’, but what ‘this’ is  
depends on, well, what you’re doing.
