hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
String/比較 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

文字列の比較

HSPでは文字列の比較は等しいかどうかしかサポートされていないため、「 HSP 」と「 PHS 」はどちらが辞書順で先に来るのか、 などを比較演算子で比較できません。
というわけでここで比較関数を作っていきます。

【関数名】  strcmp
【書  式】  strcmp( p1 , p2 )
【機  能】  二つの文字列を受け取り辞書順でどちらが先にくるかを判定する。
【戻り値】  以下のいづれかの値を返します。
                p1 = p2 ならば 0 
                p1 > p2 ならば 正数を返し p1 の方が辞書順で後にくる。
                p1 < p2 ならば 負数を返し p1 の方が辞書順で先にくる。
【補  足】  0以外の戻り値は先頭から数えて一番最初に一致しなかった文字コードの差になります。

コメント

自分なりに考えたんだけど、下記ではダメなの?
って、聞くだけだから消してもいいよ。 by hiroki

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;--------------------------------------------
; 文字列操作モジュール(strcmp)hiroki版
; HSP3.0              by hiroki (2006/1/16)
;--------------------------------------------
#module "mod_string_operation"
#defcfunc _strcmp str _s1 , str _s2
    ; 大文字小文字区別あり 'A'<'a' となります。
    ; 全角判定完全無視!! ^^;
    s1=_s1 : s2=_s2
    repeat
        c1=peek(s1,cnt) : c2=peek(s2,cnt)
        if (c1=0) | (c2=0) : break
        if c1 ! c2 : return c1-c2
    loop
    if (c1=0) & (c2=0) : return 0
    if c1>0 : return 1
    return -1
#global
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 
 
 
 
 
 
 
 
 
 
 
 
// もうすっかり忘れてた・・・strcmp()と同じ実装でこんな感じとか・・・
#module
#defcfunc strcmp str p1, str p2
    s1 = p1: s2 = p2
    repeat
        c1 = peek(s1,cnt)
        c2 = peek(s2,cnt)
        if (c1 ! c2) | c1=0: break
    loop
    return c1-c2
#global
    mes strcmp("ab","abb")

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:35:03 (2436d)