変換リストによる連続置換 Ver2.11No.00251
michihara さん 05/10/13 01:21
 
変換リスト内容
1,0,c
2,1,c
3,2,c
4,3,c
5,4,c
6,5,c
7,6,c
8,7,c
9,8,c
0,9,c
この時、下のテキストを変換すると、
0123456789
変換結果
9912345678
希望している結果は 9012345678 なんですが上手くいきません。これはアルファベッ
ト文字でも同様です。リストの書き方に問題があるのでしょうか? よろしくお願い
します。



[ ]
RE:00251 変換リストによる連続置換 Ver2No.00252
山紫水明 さん 05/10/13 07:44
 
 michiharaさん,こんにちは。

>変換リスト内容
>1,0,c
>2,1,c
>3,2,c
>4,3,c
>5,4,c
>6,5,c
>7,6,c
>8,7,c
>9,8,c
>0,9,c

 今時間がなくて自分で検証できませんが,最下行の 0.9.c を最初に持って行っ
たらどうなるでしょう。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00252 変換リストによる連続置換 Ver2No.00253
Buckeye さん 05/10/13 10:30
 
山紫水明さん、

> 今時間がなくて自分で検証できませんが,最下行の 0.9.c を最初に持って行っ
>たらどうなるでしょう。

「9012345678」にならず、「8012345678」になるはずです(私もやってみてはい
ませんが)。

変換リストの上から順に置換していくのですから、ぐるりと環を描くような置換
では不可能です。最初に置換するモノを別の文字にして、最後にまた、その文字
を置換してやらないと。たとえば、↓のように。

1,A,c
2,1,c
3,2,c
4,3,c
5,4,c
6,5,c
7,6,c
8,7,c
9,8,c
0,9,c
A,0,c

「A」ではまずいなら、他で使っていない文字列に適宜、変更すればいいでしょ
う。

Best regards,
Buckeye

[ ]
RE:00253 変換リストによる連続置換 Ver2No.00254
山紫水明 さん 05/10/13 20:16
 
 Buckeyeさん,フォローありがとうございます。
>「9012345678」にならず、「8012345678」になるはずです。
 急いでいて気がつきませんでしたが,サンプルを見直してみたらたしかにそう
でした。

 michiharaさん,
 Buckeyeさんのご指摘の通りです。
 この場合,最初の変換で1が 0 になり,最後の変換でその 0 が 9 になりま
す。
 こういう二重変換を避けるためには,中間にダミー文字を利用するようにリス
トを工夫していただけばいいと思います。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00254 変換リストによる連続置換 Ver2No.00255
michihara さん 05/10/13 23:03
 
Buckeyeさん、水明さん

解決しました。ありがとうございました。

michihara


 Buckeyeさん,フォローありがとうございます。
>>「9012345678」にならず、「8012345678」になるはずです。
> 急いでいて気がつきませんでしたが,サンプルを見直してみたらたしかにそう
>でした。
>
> michiharaさん,
> Buckeyeさんのご指摘の通りです。
> この場合,最初の変換で1が 0 になり,最後の変換でその 0 が 9 になりま
>す。
> こういう二重変換を避けるためには,中間にダミー文字を利用するようにリス
>トを工夫していただけばいいと思います。
>
>     では, (^^)/~
>                                        山紫水明
>                                        SANSHISUIMEI

[ ]