3

アンダースコアを削除する文字列クリーナーを作成しようとしていますが、数字の間にある場合 (つまり、文字列にバージョン番号がある場合) はドットに置き換えます。

 1_1_OS_And_Network_Specific_Config

この文字列は次のように出てきます

 1.1 OS And Network Specific Config

アンダースコアは簡単に置き換えることができますが、ドットに置き換える数字の間の文字を一致させるのに苦労しています。

\d_\d

アンダースコアで 2 桁に一致するように見えますが、3.4.1 のように 3 桁の場合は一致しません。

誰でも助けることができますか?

4

1 に答える 1

8

まず、数字の間のアンダースコアを置き換えます。

subject = subject.gsub(/(?<=\d)_(?=\d)/, '.')

(?<=\d)(?=\d)ルックアラウンドアサーションです。

(?<=\d)現在の場所の前後( )に数字があることを確認しますが、(?=\d)実際には一致の一部にはなりません。

次に、残りの下線を削除します。

subject = subject.gsub(/_/, ' ')
于 2012-12-12T15:59:50.053 に答える