- - PR -
文字列の比較
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-15 14:12
すみません。.Netの質問ではないのですが、.Netでも同じかもしれないので
質問させてください。 .NetではないASPなのですが、文字列の比較について質問させてください。 現在、文字列のソートプログラムを作っているのですが、 文字列と文字列を比較する場合ってどのようにすればよいのでしょうか? 例えば、消防と警察と二つの文字列があった場合、 警察の文字列を取得したいのですが、取得できない場合があります。 ASPの関数にstrcmpというのがあるのですが、うまく値を取得できません。 ほかにどんな方法がありますか?よろしくお願いします。 ちなみにstrcmpは、 temp = strcmp("消防","警察") このように記述しましたがうまく取得できませんでした。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-01-15 14:42
こんにちは。米山@クロノスです。
「うまく取得できない」とは? もう少し詳細な説明をしたほうがいいですよ。 最後の引数を省略するとバイナリモードの比較になるとありますが、そのあたりは関係ないですか? http://tryasp.winscom.co.jp/document/vbscript/199.htm | ||||||||
|
投稿日時: 2004-01-15 15:05
yukiさんこんにちは。
ちょっと気になったのですが、strcmpは文字列"消防"と"警察"の大小比較を して以下の帰り値を取得します。 ・0(等しい)、 ・-1 (文字列1 は 文字列2 より小さい) ・1 (文字列1 は 文字列2 より大きい) うまく値を取得できないとあったのですが、この値を取得できないということでしょうか? ちなみにASPではなくVB6.0で上記コードを組んでみたら結果は"1"が表示されました。 このようなことがASPの関数(strcmp)ではできないということでしょうか。 見当違いの返信かもしれませんが、 すいませんどのように取得できないのかがわからないので。 Private Sub Command1_Click() Dim str警察 As String Dim str消防 As String Dim int判定 As Integer str警察 = "警察" str消防 = "消防" int判定 = StrComp(str警察, str消防) MsgBox (int判定) End Sub | ||||||||
|
投稿日時: 2004-01-15 15:20
米山@クロノスです。
そもそも、漢字の大小って比較できないですよね? 読み方はいろいろあるわけですから。。。 それこそ純粋に文字コードの大小比較になってしまうのでは。 yukiさんがどのような結果を求めているかがわからないと答えが出ませんね。 # 文字列のソートなら、やはり読み仮名での処理が必要では? [ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2004-01-15 15:22 ] | ||||||||
|
投稿日時: 2004-01-15 16:01
こんにちわ。
というか、文字列の大小比較は、すべて文字コードの大小比較になりますね。 ASPは知りませんが、Cの標準関数にもstrcmpってありますが、利用目的は主に、 文字列が一致するかどうかや、数値の文字列・たまにあるのは半角英字文字列の ソートかとおもいます。(全角英字や、かなのみの文字列もソート可能?) ※半角英字文字列がソートできるのは、文字コード順=アルファベット順なので。 漢字の文字コードは当然、50音順とかになっていないので、strcmpでのソートは 無理かと思います。(文字コード順でのソートが目的であれば問題ないですが^^; 比較する文字列が、任意に入力できるのであれば、ソートは不可能に近いような。。 [ メッセージ編集済み 編集者: りばぁ 編集日時 2004-01-15 16:14 ] | ||||||||
|
投稿日時: 2004-01-15 17:25
そうだったけ?と思って、MSDNを見ると、最初に「辞書順」と書いてありながら、読み進めていくと「辞書順に比較するためにはstrcollを使え」と書いてありました。う〜ん、どっちだ? いや、例えば、文字コードがzyxw...cbaの順になっている実装があったとしたら、どうだったっけ?と思ったのです。 こう思った理由は、『「islower」を、マクロで「'a' 〜 'z'」で実装しているものがあるけれど、これは間違いである。EBCDICコードでは、途中にゴミがある』みたいなものを読んだことがあったから、なんですけど。
わ〜ん、「もしたら」話なんですぅ。そんなツッコミ入れないで^^; [ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-15 20:13 ] | ||||||||
|
投稿日時: 2004-01-15 17:39
こんにちわ。
MSDNには、 ・・前略 "C" ロケールでは、文字セット (ASCII文字セット) における文字の順序は、辞書式の順序と同じです。しかし、他のロケールでは文字セットにおける文字順が辞書順とは異なる場合があります。 後略・・ と、一応ちゃんと書いてありますよ?^^; というか、すみません、ぼくの勝手な判断でそういう条件を端折ってしまい、 説明がまったく足りていませんね(汗) Jittaさんの疑問は、まったくその通りだと思いますが、strcollってどんな 仕組みなんでしょうねぇ・・・。あと、これ使うと漢字も辞書順(って何の辞書!?) に出来たりするんでしょうか? | ||||||||
|
投稿日時: 2005-11-19 20:33
ASP 文字列 操作
のキーワードでStrCmpが検索され、この会議室が検索されますので 訂正しておきます。 ASPではStrCmpという関数は標準ではありません。 StrCompなら標準で存在します。 C言語でstrcmpがあるのでそれと混同しているのでしょうか? いずれにしても、ASPでStrCmpが検索されるのは勘弁して欲しいものです。 |
1