2017-10-28 13 views
1

は、私はこのような文字列の配列があるとします。文字列の配列内の文字列を抽出し、分割してRubyの新しい配列に入れますか?

arr = ["\n<start>\n<exposition> <conflict> <escape> <conclusion>\t;\n", 
     "\n<exposition>\n<bad-guy> <insane-plan>\t;\n", 
     "\n<conflict>\n<friendly-meeting> <female-interest> <danger>\t;\n"] 

私は、このような配列に戻ってそれを置く、区切り文字として\nを使用して、それを分割し、配列内のすべての文字列を抽出したい:

newArr = ["<start>", 
      "<exposition> <conflict> <escape> <conclusion>", 
      "<exposition>", 
      "<bad-guy> <insane-plan>", 
      "<conflict>", 
      "<friendly-meeting> <female-interest> <danger>"] 

私はRubyを初めて使用しましたforループを反復処理するためにループを試しましたが、すべてのUnix行が終了するように見えるので、文字列を分割する区切り文字はありません。また、文字列もarr余分な文字の\t;を削除します。

+0

片道、それほどきれいではありません。 'arr.map {| s | .flatten' –

+0

@ sagarpandya82 'scan()'の内部で何かを混乱させることがあります。 .....私にそれを説明できますか? –

+0

誰かが答えるまで待ってください(説明付き)。 'scan()'内の正規表現は、あなたの仕様に従って文字を取得しています。あなたがregexに慣れていない場合は(ご存知の場合)、https://regexone.com/をチェックしてください。 –

答えて

3

あなたは、単にいくつかの正規表現でこれを達成することができます

arr.join.split /[\n\t;]+/ 

ここで私は1つの文字列に文字列の配列に参加し、複数の条件(改行、タブ、およびセミコロン)に応じて、それを分割しています。

+0

@Cyzenfarここに2つの '; \ n'があればどうなりますか?例えば、 "[" "[" "\ n \ n <フレンドリーミーティング><女性の関心>; \ n; \ n"] 'のように、出力は[[" "、 " <女性関心> "、" "]' –

関連する問題