• ベストアンサー

文字列末尾のスペースを切り捨てるには?

Perlの初心者です。$xxxx という変数の値がどういう訳か、その末尾に半角スペースを含んでしまい、これを捨てる方法が分からなくて困っています。どなたかお教え下さい。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

末尾に半角スペースが1文字という前提です。 chop $xxxx; としてください。 chop は最後の1文字を取り除きます。

tonka729
質問者

お礼

tatus99 さま、ありがとうございました。これはPascalでやる delete(string,length(string),1)に相当するものですね。つまり必ず結果として文字列長は1半角分短くなるのですね。

すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#5537
noname#5537
回答No.5

# 本来は解決策の前に原因を探るべきなんでしょうね。 # まあ,アドバイスということで。 chomp の使い方は chop と同じです。 chomp $xxxx で OK。 chop が問答無用で最後の1文字を削除するのに対して, chomp は最後の1文字が改行の場合だけ削除します。 ファイルや標準入力からデータを読み込んできた場合, 末尾に改行がついている可能性がありますから, (ついていない可能性もある) chomp で処理するのが定石です。 # $xxxx の出所がわからないので,思いっきりはずしてるかもしれませんが。 # 覚えておいて損は無いと思います。

参考URL:
http://www2u.biglobe.ne.jp/~MAS/perl/ref/chomp.html
すると、全ての回答が全文表示されます。
  • the845t
  • ベストアンサー率33% (246/743)
回答No.4

まずは、その最後の空白というのがなんなのか調べましょう。 改行じゃなく空白であるなら、 $xxx = "This is a pen. "; $xxx =~ s/\s$//; こういう方法もあります。

すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

No1です。 >これはPascalでやる delete(string,length(string),1)に相当するものですね。 pascalについては、解りませんのでyesとは、断言出来ませんが、たぶん、その認識でよいと思います。 >つまり必ず結果として文字列長は1半角分短くなるのですね。 その通りです。

すると、全ての回答が全文表示されます。
noname#5537
noname#5537
回答No.2

問答無用に切り捨てるなら, chop ですね。 ところで,その半角スペースって実は改行コードだったりしません? HTML 中の改行コードは半角スペースと同じ扱いですから。 改行コードでしたら, chomp で削除できます。

参考URL:
http://www5a.biglobe.ne.jp/~n_rieko/perl/right.htm
tonka729
質問者

お礼

yoppii様 ありがとうございました。改行コードなのかどうかも分かりません。問題は解決しておりません。参考URLでchomp用例を見たんですが、ふふ、なんだか[ ]というのでやたらに囲ってある書き方が目立ち、初心者にはおっかない説明。この語末Space削除問題も解決が単純ではないですね。Perlはむずかしい。。。もう少し考えてみます。

すると、全ての回答が全文表示されます。

関連するQ&A