Skip to content

API StrComp ja

Codex edited this page Oct 3, 2026 · 1 revision

StrComp

API · BASIC

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

ASC · Chr · len · StrComp

ClassicUO • Runtime API

名前やコマンドの完全一致と順序を比較します。

正確な構文

StrComp(left:String, right:String) -> Integer

パラメーター

  • left — 左側の String。
  • right — 右側の String。両方必須で、3 番目の比較モード引数はありません。

戻り値

Integer -1/0/1 は前/一致/後。大文字小文字を区別する UTF-16 序数比較です。Boolean ではなく、一致は result = 0。If StrComp(...) は不一致で真になります。

動作

  • サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。
  • 言語に依存せず、言語的な並べ替えもしません。大文字小文字を無視する規則なら明示的に LCase/UCase を使います。入力は変わりません。

内部関数:呼び出しから結果まで

String.Compare の Ordinal 比較後、Math.Sign で -1、0、1 にします。

1. BasicStrComp / String.Compare / Math.Sign

String.Compare の Ordinal 比較後、Math.Sign で -1、0、1 にします。

Integer -1/0/1 は前/一致/後。大文字小文字を区別する UTF-16 序数比較です。Boolean ではなく、一致は result = 0。If StrComp(...) は不一致で真になります。

プロジェクトのソース: external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs; 関数 BasicStrComp / String.Compare / Math.Sign.

言語に依存せず、言語的な並べ替えもしません。大文字小文字を無視する規則なら明示的に LCase/UCase を使います。入力は変わりません。

使用例

コマンドを認識する

# コマンドを認識する
#
# 名前やコマンドの完全一致と順序を比較します。
#
# Integer -1/0/1 は前/一致/後。大文字小文字を区別する UTF-16 序数比較です。Boolean ではなく、一致は result = 0。If StrComp(...)
# は不一致で真になります。

SUB Main()
    # Trim/LCase が " STOP " を stop にし、0 との比較で True (1)。スクリプトは停止しません。
    # サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

    Dim action = LCase(Trim(" STOP "))
    If StrComp(action, "stop") = 0 Then
        Return True
    End If
    Return False
END SUB

パラメーターと実行の説明:

  • Trim/LCase が " STOP " を stop にし、0 との比較で True (1)。スクリプトは停止しません。
  • サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

2 つの名前を並べる

# 2 つの名前を並べる
#
# 名前やコマンドの完全一致と順序を比較します。
#
# Integer -1/0/1 は前/一致/後。大文字小文字を区別する UTF-16 序数比較です。Boolean ではなく、一致は result = 0。If StrComp(...)
# は不一致で真になります。

SUB Main()
    # zinc は iron より後なので変数を交換し、iron|zinc を返します。
    # サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

    Dim first = "zinc"
    Dim second = "iron"
    If StrComp(first, second) > 0 Then
        Dim saved = first
        first = second
        second = saved
    End If
    Return first & "|" & second
END SUB

パラメーターと実行の説明:

  • zinc は iron より後なので変数を交換し、iron|zinc を返します。
  • サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

正確な許可名を探す

# 正確な許可名を探す
#
# 名前やコマンドの完全一致と順序を比較します。
#
# Integer -1/0/1 は前/一致/後。大文字小文字を区別する UTF-16 序数比較です。Boolean ではなく、一致は result = 0。If StrComp(...)
# は不一致で真になります。

SUB Main()
    # ContainsExact は | 区切りを走査し、Ore に完全一致して True (1)。ore は Ore と一致しません。
    # サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

    Return ContainsExact("ore|Ore|wood", "Ore")
END SUB

Function ContainsExact(names, wanted)
    For index = 0 To GetWordCount(names, "|") - 1
        If StrComp(GetWord(names, index, "|"), wanted) = 0 Then
            Return True
        End If
    Next
    Return False
End Function

パラメーターと実行の説明:

  • ContainsExact は | 区切りを走査し、Ore に完全一致して True (1)。ore は Ore と一致しません。
  • サンプルデータをローカルで処理して値を返します。チャット送信、スクリプト停止、アイテム移動、サーバー通信は行いません。

Clone this wiki locally