Jamison Dance
Jamison Dance

Reputation: 20184

Ruby file IO delimiters?

I am trying to parse a text file that contains a variable number of words and numbers per line, like this:

foo 4.500 bar 3.00
1.3 3 foo bar

How can I read the file delimited by spaces instead of newlines? Is there some way I can set the File("file.txt").foreach method to use a spaces instead of newlines as a delimiter?

Upvotes: 5

Views: 2522

Answers (3)

Mike S
Mike S

Reputation: 11409

The accepted answer will slurp the file, which can be a problem with large text files.

A better solution is IO.foreach. It is idiomatic and will stream the file char by char:

File.foreach(filename," ") {|string| puts string}

Sample file containing "this is an example" results with

"this"
"is"
"an"
"example"

Upvotes: 4

Peter
Peter

Reputation: 132247

You can use

open('file.txt').read.split.each

to give you an iterator over space (or newline) separated words.

Upvotes: 3

Postnap
Postnap

Reputation: 31

File.open("file.txt").read.split(" ").each

Upvotes: 3

Related Questions