canonical_id: "string_ops" display_name: "字串操作" category: "logic" version: "v1" wasi_target: "preview1" stability: "floating" runtime_compat: - "cf-workers" - "workerd" - "wazero" constraints: max_size_kb: 2048 max_cold_start_ms: 50 no_network_syscall: true no_filesystem_syscall: true io_model: "stdin_stdout_json" input_schema: type: object required: [operation, input] properties: operation: type: string enum: [upper, lower, trim, capitalize, replace, split, join, includes, starts_with, ends_with, length, substring] input: type: string args: type: object description: 操作參數(依 operation 而定) output_schema: type: object properties: success: type: boolean data: type: object properties: result: {} operation: type: string gherkin_tests: - scenario: "upper 操作" given: '{"operation":"upper","input":"hello"}' then_contains: '"result":"HELLO"' - scenario: "replace 操作" given: '{"operation":"replace","input":"hello world","args":{"from":"world","to":"u6u"}}' then_contains: '"result":"hello u6u"' - scenario: "不支援的 operation" given: '{"operation":"unknown","input":"test"}' then_contains: '{"success":false' tags: [builtin, data, string, transform, text] description: "字串操作:upper/lower/trim/capitalize/replace/split/join/includes/starts_with/ends_with/length/substring。" config_example: | my_string_op: # 節點名稱(可自訂) operation: "replace" # 運算類型(必填),可選值:upper/lower/trim/capitalize/replace/split/join/includes/starts_with/ends_with/length/substring input: "hello world" # 輸入字串(必填) args: # 操作參數,依 operation 而定(選填) from: "world" # replace 用:要被取代的子字串 to: "arcrun" # replace 用:取代後的字串