//@version=6
indicator("I_strings_ops")
float naF = na
plot(bar_index, "bar_index")
// ---- str.* 经数值输出 ----
plot(str.length("héllo"), "len_unicode")
plot(str.length("日本語"), "len_cjk")
plot(str.length("a😀b"), "len_emoji")
plot(str.pos("hello", "l"), "pos_first")
plot(str.pos("hello", "z"), "pos_missing")
plot(str.tonumber("3.5"), "tonumber_3p5")
plot(str.tonumber(" 42 "), "tonumber_spaces")
plot(str.tonumber("1e3"), "tonumber_sci")
plot(str.tonumber("-0.5"), "tonumber_neg")
plot(str.tonumber("0x10"), "tonumber_hex")
plot(str.tonumber(""), "tonumber_empty")
plot(str.length(str.tostring(1 / 3)), "len_tostring_1_3")
plot(str.length(str.tostring(0.1 + 0.2)), "len_tostring_0p3")
plot(str.length(str.tostring(1e21)), "len_tostring_1e21")
plot(str.length(str.tostring(naF)), "len_tostring_na")
plot(str.length(str.tostring(true)), "len_tostring_true")
plot(str.length(str.format("{0}", 1.0)), "len_format_1")
plot(str.length(str.repeat("ab", 3)), "len_repeat")
plot(str.length(str.repeat("ab", 3, "-")), "len_repeat_sep")
plot(str.length(str.trim(" x ")), "len_trim")
plot(array.size(str.split("a,b,,c", ",")), "split_empty_field")
plot(array.size(str.split("abc", "")), "split_empty_sep")
plot(str.length(str.substring("hello", 1, 3)), "len_substring")
plot(str.length(str.substring("hello", 3)), "len_substring_from")
plot(str.length(str.replace_all("aaa", "a", "bb")), "len_replace_all")
plot(str.length(str.replace("aaa", "a", "bb", 1)), "len_replace_occ1")
plot(str.contains("hello", "") ? 1 : 0, "contains_empty")
plot(str.startswith("hello", "he") ? 1 : 0, "startswith")
plot(str.endswith("hello", "lo") ? 1 : 0, "endswith")
plot(str.length(str.match("abc123def", "[0-9]+")), "len_match")
plot(str.length(str.match("abc", "[0-9]+")), "len_match_none")
plot(str.length(str.upper("straße")), "len_upper_sharp_s")
plot("abc" == "abc" ? 1 : 0, "str_eq")
plot("abc" != "abd" ? 1 : 0, "str_ne")
plot(str.length("a" + "b" + str.tostring(1)), "len_concat")
// ---- 类型转换与运算符优先级 ----
plot(int(3.7), "int_3p7")
plot(int(-3.7), "int_m3p7")
plot(float(3), "float_3")
plot(2 - -3, "minus_minus")
plot(-2 * 3, "neg_times")
plot(5 % 3 * 2, "mod_times")
plot(2 * 3 % 4, "times_mod")
plot(2 + 3 * 4, "prec_add_mul")
plot((2 + 3) * 4, "prec_paren")
plot(1 + 2 > 2 ? 10 : 20, "prec_cmp_ternary")
plot(false ? 1 : true ? 2 : 3, "ternary_right_assoc")
plot(not true and false ? 1 : 0, "not_and_prec")
plot(true or false and false ? 1 : 0, "or_and_prec")
plot(-close[1] + close[1], "unary_minus_history")
plot(bar_index / 2, "series_int_div")
plot(7 / 2 * 2, "const_div_mul")
plot(7 * 2 / 4, "const_mul_div")
plot(1 / 2 + 1 / 2, "const_half_plus_half")
plot(2147483647 * 2, "int_mul_overflow")