C言語関係掲示板

過去ログ

No.1089 URL中のカンマをとりあえず別の文字列に置換したいのです。

[戻る] [ホームページ]
No.14292

URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---百烈拳(2004/05/28 19:01:26)


私が仕事で扱うデータ中に以下のようなURLがあるのですが、
このデータを読み込むプログラムの方ではカンマ区切りで読み込んでいます。なんとかプログラムに渡す前にカンマをカンマ以外の何かに置換しておきたいのですがいい方法が思いつきません。ちなみにプログラムで処理した後でまたカンマに戻します。なにかいい方法はないでしょうか?
こういうのです↓
"www.e-towncom.jp/iasga/sv/eBBS_Main?uid=558&aid=0&s=773,762&1075046624185"


No.14293

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---シャノン(2004/05/28 19:35:41)


>私が仕事で扱うデータ中に以下のようなURLがあるのですが、
>このデータを読み込むプログラムの方ではカンマ区切りで読み込んでいます。なんとかプログラムに渡す前にカンマをカンマ以外の何かに置換しておきたいのですがいい方法が思いつきません。ちなみにプログラムで処理した後でまたカンマに戻します。なにかいい方法はないでしょうか?
>こういうのです↓
>"www.e-towncom.jp/iasga/sv/eBBS_Main?uid=558&aid=0&s=773,762&1075046624185"

やり方はたくさーんありますが、一例を紹介すると

strchr という関数で、文字列の中からある特定の一文字を探し出し、そのポインタを得ることができます。
そのポインタの位置に、何かしら別の文字を入れてやる、と。
カンマがいくつもある可能性があるなら、カンマが見つからなくなるまで繰り返し strchr を使います。
2回目以降の strchr の第一引数は、前と同じではいけない点に注意。



No.14319

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---百烈拳(2004/05/31 10:40:18)


>>私が仕事で扱うデータ中に以下のようなURLがあるのですが、
>>このデータを読み込むプログラムの方ではカンマ区切りで読み込んでいます。なんとかプログラムに渡す前にカンマをカンマ以外の何かに置換しておきたいのですがいい方法が思いつきません。ちなみにプログラムで処理した後でまたカンマに戻します。なにかいい方法はないでしょうか?
>>こういうのです↓
>>"www.e-towncom.jp/iasga/sv/eBBS_Main?uid=558&aid=0&s=773,762&1075046624185"
>
>やり方はたくさーんありますが、一例を紹介すると
>
>strchr という関数で、文字列の中からある特定の一文字を探し出し、そのポインタを得ることができます。
>そのポインタの位置に、何かしら別の文字を入れてやる、と。
>カンマがいくつもある可能性があるなら、カンマが見つからなくなるまで繰り返し strchr を使います。
>2回目以降の strchr の第一引数は、前と同じではいけない点に注意。

コメントありがとうございます。たしかにやり方はたくさんありそうですね。ところで
>そのポインタの位置に、何かしら別の文字を入れてやる、と。
『何かしら別の文字』とは何を入れればよいのでしょうか?URLで絶対使われない文字である必要があると思います。パラメータまで考慮した場合そんな文字あるのでしょうか?



No.14321

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---NykR(2004/05/31 11:27:36)


別の文字に置換するのではなく、エスケープ文字を使ったらどうでしょう。

URLに含まれる `,' はその直前に `\' か何かのエスケープ文字を挿入。
URLの中に含まれている、エスケープ文字と同じ文字の前にもエスケープ文字を挿入。

これなら簡単に戻せますね。


No.14322

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---ぽこ(2004/05/31 11:59:50)


>『何かしら別の文字』とは何を入れればよいのでしょうか?URLで絶対使われない文字である必要があると思います。パラメータまで考慮した場合そんな文字あるのでしょうか?

カンマ(,)の文字コードは0x2cなので、"%2C"に置き換えてはどうでしょうか?


No.14324

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---nop(2004/05/31 12:29:23)


>私が仕事で扱うデータ中に以下のようなURLがあるのですが、
>このデータを読み込むプログラムの方ではカンマ区切りで読み込んでいます。なんとかプログラムに渡す前にカンマをカンマ以外の何かに置換しておきたいのですがいい方法が思いつきません。

そもそも、きちんと URL エンコーディングすれば、
URL 中に「,」は出てこないと思いますが?



No.14408

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---百烈拳(2004/06/03 11:48:02)


シャノンさん、NykRさん、ぽこさん、nopさんありがとうございました。
突然ひらめきました!URL中で絶対使われない文字は『\t』だと。URL中のカンマはとりあえず『\t』に変換してやり過ごすことにしました。


No.14411

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---ぽこ(2004/06/03 13:19:20)


>突然ひらめきました!URL中で絶対使われない文字は『\t』だと。URL中のカンマはとりあえず『\t』に変換してやり過ごすことにしました。

私的な意見ですが、nopさんが示されたとおり、
URLエンコーディングすることが正しい解決法だと思うのですが。。


No.14413

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---nop(2004/06/03 13:42:53)


>突然ひらめきました!URL中で絶対使われない文字は『\t』だと。URL中のカンマはとりあえず『\t』に変換してやり過ごすことにしました。

何故にURLエンコーディングをしない?
URLエンコーディングしておけば、
そのURLを活用する時に何もする必要がないが、
URLエンコーディングしていなければ、
活用する時にエンコーディングしなければならない手間が掛かる。



No.14415

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---百烈拳(2004/06/03 15:04:44)


説明不足ですいません。『URL』と言ってたのですが、実は納品されるテキストデータの中に『URL』という項目があってその文字列の中にカンマが入ってきたりこなかったりしてるんです。つまり『URL』というか単なる文字列なんで私の方でエンコーディングしたりはちょっとNGだったんです。


No.14425

Re:URL中のカンマをとりあえず別の文字列に置換したいのです。
投稿者---nop(2004/06/03 16:11:56)


>私の方でエンコーディングしたりはちょっとNGだったんです。


それなら、勝手に「,」を「\t」にエンコーディングするのもNGでしょう。