• ベストアンサー

変数の中の改行を削除する方法

某CGIを改造中です。 $parts[0]~$parts[5]に文字列が入っています。 普段は改行入りなのですが、一部使用する場所だけは改行を抜きたいと思います。 可能でしょうか?また、その場合、どのようにしたらいいのでしょうか? 表示部分は「$parts[$part]」となっています。 初心者な為、何を伝えればいいかが良くわかっていません。必要な情報があれば書き込みします。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

> $parts[0] = 'ジャンル1<BR>(ジャンル1の大まかな内容)'; > このように、途中に入るので、置換パターンが必要と言うことですよね。 改行というのは HTML の改行タグのことだったんですね^^; でしたら、 s/<BR>//ig for @tmp_parts = @parts; としてください。 # BR の大文字小文字を無視するため、置換オプションに i を付けています。

master-3rd
質問者

お礼

質問を終了しようとしたら書き込みが… ちょっとの差でしたねw ># BR の大文字小文字を無視するため、置換オプションに i を付けています。 ほぅ。iでそのようになるのですね。 今回は前回の補足でもわかる通りコピペの連続なので、 使う必要はありませんが、今後の参考にさせていただきます。 ありがとうございます。

その他の回答 (2)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

改行抜きのデータが必要な場所が限られているなら、直接 @parts から改行を抜かず、一時的な変数にコピーして改行を抜きましょう。 また、「改行入り」というのが文字列末尾だけならば chomp で抜くことができますが、途中にも入っているとなると =~ s/\n//g などとする必要があります。 ・chomp パターン chomp(@tmp_parts = @parts); ・置換パターン s/\n//g for @tmp_parts = @parts; どちらも @tmp_parts に @parts をコピーし、@tmp_parts の方から改行を抜いています。 表示の際は、「$tmp_parts[$part]」としてください。

master-3rd
質問者

お礼

すみません。自己解決しました。 s/\n//g for @tmp_parts = @parts; ではなく、 s/<BR>//g for @tmp_parts = @parts; としたら良いだけでした。 ありがとうございました。

master-3rd
質問者

補足

返答ありがとうございます。 途中にあるのと後ろにあるのとでも差があるのですね。 補足すると、以下のようになっています。 $parts[0] = 'ジャンル1<BR>(ジャンル1の大まかな内容)'; $parts[1] = 'ジャンル2<BR>(ジャンル2の大まかな内容)'; ~~ このように、途中に入るので、置換パターンが必要と言うことですよね。 … やってみたのですが、表示はされるのですが、改行が消えてません。(T.T) 何が間違っているのでしょうか?

  • fluffy
  • ベストアンサー率29% (87/293)
回答No.1

chompを使うという意味ではなく?

関連するQ&A

専門家に質問してみよう