2016-12-07 4 views
1

私はRubyにyuks用のMarkovボットを作りました。そして、私はそれを1日に4回つぶすために地元の仕事を設定しています。しかし、私のコードはちょっとばかばかしく、ノービスです。返されたマルコフのつぶやきは140文字を超えることがあります。もし私がスクリプトを手動で実行しているなら、それは問題ありません。私は楽しく失敗するように設定しました。しかし、私はこれを自動化するつもりなら、文字数を超えて失敗した場合は、成功するまでもう一度やり直してください。ここに私の超基本的なifステートメントがあります。この条件が満たされない場合、このRubyスクリプトをもう一度実行するにはどうすればよいですか?

if tweet_text.size <= 140 
    client.update(tweet_text) 
    p "#{Time.now}: #{tweet_text}" 
else 
    p "Tweet exceeded 140 characters. Try again." 
end 

答えて

1

私は理解している場合、あなたはつぶやきのサイズは140よりも優れていること、この曲のコード毎回実行したい私は、最も簡単な解決策は、ループの中でそれを書くときのサイズループを終了することであると思います有効です。

while true 
    tweet_text = new_tweet # Change the text of tge tweet or the loo will loop forever 
    if tweet_text.size <= 140 
     client.update(tweet_text) 
     p "#{Time.now}: #{tweet_text}" 
     break 
    else 
     p "Tweet exceeded 140 characters. Try again." 
    end 
end 

は、それが助け

グレゴリーを願っています。

+0

私はそれを少し微調整する必要がありました(私は私の例のうち、いくつかの重要なコードを左)が、今それが適切にループします。それが壊れた場合、それはちょうど周りに戻り、再び試みます。ありがとうございました。 –

0

ループが140より短いツイートに収束することがわかっている場合は、Gregoryの答えは問題ありません。

つぶやきが長すぎる場合はそうでない場合、あなたには、いくつかの部分文字列を削除する場合があります

if tweet_text.size <= 140 
    client.update(tweet_text) 
    p "#{Time.now}: #{tweet_text}" 
else 
    p "Tweet exceeded 140 characters. Truncating." 
    truncated_tweet = tweet_text[0,69]+".."+tweet_text[-69,69] 
    client.update(truncated_tweet) 
    p "#{Time.now}: #{truncated_tweet}" 
end 
関連する問題