2012年7月 1日

[ruby-list:48811] Re: 全角文字列中の全角及び半角スペースにマッチさせる正規表現

From: "Zisaki,Takeshi" <tanzanitez@xxxxx>
Subject: [ruby-list:48810] 全角文字列中の全角及び半角スペースにマッチさせる正規表現
Date: Sun, 1 Jul 2012 10:48:40 +0900

るびきちです。

> 趣味でrubyプログラミングをやっている Zisaki と言います。
> 「全角文字列中の全角及び半角スペースにマッチさせる正規表現」が分からないので教えてください。

>
>
> 1 ソース
> # -*- encoding: utf-8 -*-
>
> # 23.の後に全角スペース、12.の後に半角スペースが存在
> str = "H23. 12. 15"
> puts str
>
> # \sの後に全角スペースがあり、全角、半角スペースを - に変換する。
> str.gsub(/[\s ]/, "-")
> puts str
>
>
> 期待する結果
> => H23. 12. 15
> H23.-12.-15
>
> 実際の結果
> => H23. 12. 15
> H23. 12. 15

正規表現はあっています。

ただ、
str.gsub(/[\s ]/, "-")
は、strを置換した新しい文字列を得て、その結果を捨てています。

なので、変数に代入するか、str自身を書き換えるかすれば解決します。

# 変数に代入する場合
str = str.gsub(/[\s ]/, "-")

# 自分自身を書き換える場合(破壊的メソッド)
str.gsub!(/[\s ]/, "-")

プログラミングに不慣れのようですので、
慣れるまでは前者をおすすめします。

自分自身を書き換えることには、思わぬ
落とし穴が潜んでいるからです。

====
# -*- encoding: utf-8 -*-

# 23.の後に全角スペース、12.の後に半角スペースが存在
str = "H23. 12. 15"
puts str

# \sの後に全角スペースがあり、全角、半角スペースを - に変換する。
str = str.gsub(/[\s ]/, "-")
puts str
# >> H23. 12. 15
# >> H23.-12.-15
====

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/
Twit: http://twitter.com/rubikitch/
Emacsネット塾『Emacsの鬼るびきちのココだけの話』 http://tinyurl.com/76bnprd
『Emacs Lispテクニックバイブル』 http://tinyurl.com/6r6khos
『Emacsテクニックバイブル』 http://tinyurl.com/24yghag
『Ruby逆引きハンドブック』 http://tinyurl.com/pbfqwn


投稿者 xml-rpc : 2012年7月 1日 11:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/111298
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。