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

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

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

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

Q&A

解決済

2回答

2853閲覧

ある文字列から、与えられた条件に従って文字列を抽出する。

yuz55

総合スコア11

Ruby

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

0グッド

0クリップ

投稿2017/04/24 08:16

###前提・実現したいこと
1行目の入力のスペースで区切られた文字列、タグA、タグBで囲まれた文字列を2行目の入力の文字列Sから抽出して出力します。
タグAを開始タグ、タグBを終了タグとして考えます。
それぞれのタグはタグ開始文字'<'とタグ終了文字'>'で囲まれた半角英数文字列です。開始タグと終了タグは同じ文字列になる事はありません。
文字列Sは半角英数と<>のみです。

文字列を抽出する手順は以下の通りです。

① 文字列SからタグAを(左から)右に向かって検索する
② ①で検索したタグA出現位置からタグBを(左から)右に向かって検索する
③ 検索したタグA,Bに囲まれている文字列を抽出し出力する。また、抽出文字の長さが、0の場合、<blank>と出力する
④ タグBの出現位置から再度タグAを検索し、存在すればタグA出現位置からタグBを検索し③の処理を行い、存在しなければ処理を終了する
⑤ ④を繰り返す

入力例:
<Banana> <Cupcake>
ApplePie<Banana>Bread<Cupcake>Apple<Banana><Cupcake>
出力例:
Bread
<blank>

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

ruby

1input = gets.split 2a = input[0] 3b = input[1] 4 5line = gets 6str = line.scan(/a(\w+)b/) 7 8

このようにscanメソッドを使えばタグで囲まれた文字列を配列の形で得られる…と考えてみたのですが、方向性が間違ってるのかここで行き詰っています。解決方法がございましたらご助言いただけると嬉しいです。

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

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

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

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

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

guest

回答2

0

文字列の抽出

Paiza ですね。人に解き方を聞いてはダメだと書いてあったはずです。

投稿2017/04/24 08:47

Zuishin

総合スコア28660

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

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

0

ベストアンサー

Ruby

1input = "<Banana> <Cupcake> ".split("\s") 2a = input[0] 3b = input[1] 4 5line = "ApplePie<Banana>Bread<Cupcake>Apple<Banana><Cupcake> " 6str = line.scan(/#{a}(\w*)#{b}/).flatten 7 8str.each do |element| 9 if element.empty? 10 element = "<blank>" 11 end 12 puts element 13end

実行結果例

Bread <blank>

考えてみました。

投稿2017/04/24 08:38

編集2017/04/24 08:50
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問