Uncut words (string)

I have this paragraph as one srting , apllied below code as suggested by
one of the member.

words = “Kid games need to be both fun and educational. Aimed at ages
pre-K through middle school, safe environment to discover their
abilities and learn new skills with interactive and fun computer
games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem.”

line_length = 10

word_arry = words.split(" ")

text = (0…(words.length / line_length)).inject([]) {|v,num| start =
num * line_length; v << %Q{<= #{words[(start)…(start +
line_length)].join(" ")} =>}}

text.join("\n")

It cuts the string after every 10 characters into like this

<= Kid games need to be both fun and educat =><= ional. Aimed at ages
pre-K through middl =><= e school, safe environment to discover t =><=
heir
abilities and learn new skills with =><= interactive and fun computer
games. Our =><= games build skills in math, logic, memo =><= ry,
vocabulary,
alphabet, spelling, geog =><= raphy, computer skills, color identifica
=><= tion,
shape identification and other var =><= ious problem solving. Our
commitment
to =><= parents, teachers, and kids, is to conne =><= ct earning and
skill
building with a sen =><= se of challenge, fun, and self esteem. =>

What i need is the words remain uncut if it comes in the range like in
first line i want eductaional to be complete if it is not in range than
it wil show upto “and”

any kind of help highly appreciated,its a urgent need.Please provide any
way to it.

Regards & thanks

amit

Hi.

I think what you want to do is word-wrapping across lines depending on
line length.

Here’s a pretty nice algorithm using a regular expression:

class String
def word_wrap(line_length=80)
self.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “\1\n”)
end
end

What this does is put the word_wrap method onto the string class.

So, you can do this:

string_to_wrap = “Kid games need to be both fun and educational. Aimed
at ages pre-K through middle school, safe environment to discover
their abilities and learn new skills with interactive and fun computer
games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem.”

puts string_to_wrap.wrap

If you want to change the number of characters that it will wrap at
(ie line length), which defaults to 80… then specify it as an
argument:

puts string_to_wrap.wrap(10)

Good luck, and remember that when posting questions to this list, it’s
really good to carefully prepare your question.

Julian.


Learn: http://sensei.zenunit.com/
Last updated 20-May-09 (Rails, Basic Unix)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

Julian L. wrote:

Hi.

I think what you want to do is word-wrapping across lines depending on
line length.

Here’s a pretty nice algorithm using a regular expression:

class String
def word_wrap(line_length=80)
self.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “\1\n”)
end
end

What this does is put the word_wrap method onto the string class.

So, you can do this:

string_to_wrap = “Kid games need to be both fun and educational. Aimed
at ages pre-K through middle school, safe environment to discover
their abilities and learn new skills with interactive and fun computer
games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem.”

puts string_to_wrap.wrap

If you want to change the number of characters that it will wrap at
(ie line length), which defaults to 80… then specify it as an
argument:

puts string_to_wrap.wrap(10)

Good luck, and remember that when posting questions to this list, it’s
really good to carefully prepare your question.

Julian.


Learn: http://sensei.zenunit.com/
Last updated 20-May-09 (Rails, Basic Unix)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

Thanks julian for your help almost at the end, little help more.

i used your regular expression

line_length = 40
words = “Kid games need to be both fun and educational. Aimed at
ages
pre-K through middle school, safe environment to discover their
abilities and learn new skills with interactive and fun computer
games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem.”

words = words.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1\n”)
words = words.sub(‘<=’, ‘’)
abort words

output

Kid games need to be both fun and
<=educational. Aimed at ages
<=pre-K through middle school, safe
<=environment to discover their
<=abilities and learn new skills with
<=interactive and fun computer
<=games. Our games build skills in math,
<=logic, memory, vocabulary,
<=alphabet, spelling, geography, computer
<=skills, color identification,
<=shape identification and other various
<=problem solving. Our commitment
<=to parents, teachers, and kids, is to
<=connect earning and skill
<=building with a sense of challenge, fun,
<=and self esteem.

need to append “=>” at end of each line to like in startin.

waiting for you last help

Regards

words = “Kid games need to be both fun and educational. Aimed at ages
pre-K through middle school, safe environment to discover their
abilities and learn new skills with interactive and fun computer
games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem.”

word_arry = words.split(" ")

count=0
line_text=“<=”
word_arry.each {|word|
count+=word.length
if count > 40
count=0
line_text+=“=>\n<=”+word+" "
else
end_txt = (count > 38) ? word : word+" "
line_text+=end_txt
end
}
line_text+=“=>”

puts line_text

On Wed, May 27, 2009 at 5:23 PM, Ruby O.
[email protected]wrote:

def word_wrap(line_length=80)
their abilities and learn new skills with interactive and fun computer
argument:
Last updated 20-May-09 (Rails, Basic Unix)
ages
abort words
<=logic, memory, vocabulary,

waiting for you last help

Regards

Posted via http://www.ruby-forum.com/.


With regards,
Arunkumar B.
9789980534.
http://thinkingrails.blogspot.com

On 27/05/2009, at 9:53 PM, Ruby O. wrote:

games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem."

words = words.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1\n”)
words = words.sub(‘<=’, ‘’)
abort words

Hi.

Is it really too much work for you to work out what you need to do?

class String
def word_wrap(line_length=80)
self.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1=>\n”)
end
end

Perhaps you should join http://sensei.zenunit.com/

Julian.


Learn: http://sensei.zenunit.com/
Last updated 20-May-09 (Rails, Basic Unix)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

On 27/05/2009, at 9:59 PM, Arunkumar B wrote:

end
}
line_text+=“=>”

puts line_text

This goes to show very easily that you can write really bad code in
any language.

You have a beautiful set of iterators and other idiomatic ruby
available to you. Why on earth would you denigrate ruby to working
like a procedural language?

Julian.


Learn: http://sensei.zenunit.com/
Last updated 20-May-09 (Rails, Basic Unix)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

Julian L. wrote:

On 27/05/2009, at 9:53 PM, Ruby O. wrote:

games. Our games build skills in math, logic, memory, vocabulary,
alphabet, spelling, geography, computer skills, color identification,
shape identification and other various problem solving. Our commitment
to parents, teachers, and kids, is to connect earning and skill
building with a sense of challenge, fun, and self esteem."

words = words.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1\n”)
words = words.sub(‘<=’, ‘’)
abort words

Hi.

Is it really too much work for you to work out what you need to do?

class String
def word_wrap(line_length=80)
self.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1=>\n”)
end
end

Perhaps you should join http://sensei.zenunit.com/

Julian.


Learn: http://sensei.zenunit.com/
Last updated 20-May-09 (Rails, Basic Unix)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

Great it worked for me !!

is there any solution to traverse a string character by charcater in
ruby on rails.

Regards

amit

Split your string to words like described. Then create an empty array
of lines and an empty temporary string. Loop over your words. In the
loop, pop a word off the words array and append it to the temp.
String. Check for the length of it. If it is more than line_length
push the temp. String to the lines array and break the loop, else do
nothing. Repeat this until your words array is empty (this means
another loop around the described one).

While this is not as elegant as the solution posted before, it might
be understandable by a novice programmer.

2009/5/27, Ruby O. [email protected]:

to parents, teachers, and kids, is to connect earning and skill
text.join(“\n”)
=><= tion,


Von meinen Mobilgerät aus gesendet

2009/5/27 Ruby O. [email protected]

words = words.sub(‘<=’, ‘’)
self.gsub(/(.{1,#{line_length}})(\s+|\Z)/, “<=\1=>\n”)
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r

Great it worked for me !!

is there any solution to traverse a string character by charcater in
ruby on rails.

Have you tried looking through the documentation for the String class?
See
http://www.ruby-doc.org/core/classes/String.html

Colin