2017-10-08 11 views
-2

/n ASCII文字で区切られた複数行の文字列を受け取るメソッドがあります。引数は、一重引用符/二重引用符の文字列リテラルのいずれかです。例えば文字列が一重引用符と二重引用符であるかどうかをチェックし、そこからASCII文字をエスケープする

"This is/n a multiline/n string".lines => ["This is", "a multiline", "string"] 

しかし

'This is/n a multiline/n string'.lines => ["This is/n a multiline/n string"] 

私は/ nで文字列を分離する必要があります。文字列は、一重引用符または二重引用符として渡すことができます。

どうすればこの問題を解決できますか?

+0

「/ n個のASCII文字が」何ですか? – sawa

+0

私は、動作する単一のソリューションが必要です。 'This is/n multiline/n string'split('/n ')は目的を解決しますが、 "これは/ n複数行/ n文字列" .split('/n ')で失敗します。 – user122121

+0

あなたが何を求めているか分かりません。 – sawa

答えて

1

あなただけの代わりにlinesの正規表現マッチングの両方(改行制御文字"\n"と文字列'\n')でsplitを使用することができます。

"This is\n a multiline\n string".split(/\n|\\n/) 
#=> ["This is", " a multiline", " string"] 
'This is\n a multiline\n string'.split(/\n|\\n/) 
#=> ["This is", " a multiline", " string"] 
+0

引用符付きの単一文字列と二重引用符付きの文字列を区別するには、どちらも同じ「文字列」クラスに属していますか?答えてくれてありがとう! – user122121

+1

それは問題ではありません。どちらもストリングだけであり、クラスの視点と違いはありません。違いは '' \ n ''は制御文字ですが、'' \ n ''は ''\''と ''n' 'の2文字です。文字列に制御文字が含まれているかどうかを調べる方法を尋ねたいかもしれません。しかし、あなたの例では、両方を含む文字列が存在する可能性があるので、それはあなたの問題を解決しません。したがって、両方のケースを処理してください。 – spickermann

関連する問題