質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

902閲覧

@arrの要素の先頭に""が含まれているのはなぜですか?

ruby_rookie

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/04/30 02:33

###前提・実現したいこと
日本語の演算子が含まれる文字列をコードの演算子に変換し、計算が実行されるようにしたいです。
また、@arrの要素の先頭に""が含まれている理由が知りたいです。

###発生している問題・エラーメッセージ
エラーはありませんが、@arrの要素の先頭に""が含まれています

###該当のソースコード
Ruby

class Calcuration
def initialize(str)
@str=str
@arr=@str.split(/(\w+)/)
end

def display print @arr #=> ["", "1", "たす", "1"] end

end

sample=Calcuration.new("1たす1")
sample.display

###試したこと
split以外に/(\d+)(\w+)(\d+)/などで切り分けて$1~$3などで置き換えようと思いましたが、どういうわけか、
こちらのやり方では、何も表示されませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
ver2.33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Rubyの正規表現では、\w英数字とアンダーバーにヒットするようになっています(るりま)。

なので、1たす1splitすると、「」(区切り文字:1)「たす」(区切り文字:1)「」のように区切れますが、splitのデフォルトでは「末尾の空文字列は削除する」ようになっていますので、得られたような結果になります。。

投稿2017/04/30 02:40

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruby_rookie

2017/04/30 03:04

おお、なるほど、splitの時点で @arr=["", "1", "たす", "1", ""] となって、デフォルトで末尾の空文字が削除されるんですね。勉強になりました。 なお、先頭の空文字ですが、ちょっとぶさいくながら、 print @arr.reject(&:empty?) で除去して対応することにしました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問