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

From: rubikitch@...
Date: 2012-07-01 02:29:44 UTC
List: ruby-list #48811
From: "Zisaki,Takeshi" <tanzanitez@gmail.com>
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

In This Thread