pub const STRING_UTILS: &str = "// stdlib/string_utils.aether\n// Aether \u{5b57}\u{7b26}\u{4e32}\u{5de5}\u{5177}\u{5e93}\n// \u{63d0}\u{4f9b}\u{4e30}\u{5bcc}\u{7684}\u{5b57}\u{7b26}\u{4e32}\u{64cd}\u{4f5c}\u{51fd}\u{6570}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{4fee}\u{526a} ====================\n\n// \u{79fb}\u{9664}\u{5b57}\u{7b26}\u{4e32}\u{4e24}\u{7aef}\u{7684}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\nFunc STR_TRIM(STR) {\n Set RESULT STR\n Set LEN LEN(STR)\n \n If (LEN == 0) {\n Return RESULT\n }\n \n // \u{67e5}\u{627e}\u{7b2c}\u{4e00}\u{4e2a}\u{975e}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\n Set START 0\n Set I 0\n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n If (CHAR != \" \" && CHAR != \"\\t\" && CHAR != \"\\n\" && CHAR != \"\\r\") {\n Set START I\n Break\n }\n Set I (I + 1)\n }\n \n // \u{5982}\u{679c}\u{5168}\u{662f}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\n If (I == LEN) {\n Return \"\"\n }\n \n // \u{67e5}\u{627e}\u{6700}\u{540e}\u{4e00}\u{4e2a}\u{975e}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\n Set END (LEN - 1)\n Set J (LEN - 1)\n While (J >= 0) {\n Set CHAR STRSLICE(STR, J, J + 1)\n If (CHAR != \" \" && CHAR != \"\\t\" && CHAR != \"\\n\" && CHAR != \"\\r\") {\n Set END J\n Break\n }\n Set J (J - 1)\n }\n \n Return STRSLICE(STR, START, END + 1)\n}\n\n// \u{79fb}\u{9664}\u{5b57}\u{7b26}\u{4e32}\u{5de6}\u{4fa7}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\nFunc STR_TRIM_LEFT(STR) {\n Set LEN LEN(STR)\n Set I 0\n \n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n If (CHAR != \" \" && CHAR != \"\\t\" && CHAR != \"\\n\" && CHAR != \"\\r\") {\n Break\n }\n Set I (I + 1)\n }\n \n Return STRSLICE(STR, I, LEN)\n}\n\n// \u{79fb}\u{9664}\u{5b57}\u{7b26}\u{4e32}\u{53f3}\u{4fa7}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\nFunc STR_TRIM_RIGHT(STR) {\n Set LEN LEN(STR)\n Set I (LEN - 1)\n \n While (I >= 0) {\n Set CHAR STRSLICE(STR, I, I + 1)\n If (CHAR != \" \" && CHAR != \"\\t\" && CHAR != \"\\n\" && CHAR != \"\\r\") {\n Break\n }\n Set I (I - 1)\n }\n \n Return STRSLICE(STR, 0, I + 1)\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{586b}\u{5145} ====================\n\n// \u{5728}\u{5b57}\u{7b26}\u{4e32}\u{5de6}\u{4fa7}\u{586b}\u{5145}\u{5b57}\u{7b26}\u{5230}\u{6307}\u{5b9a}\u{957f}\u{5ea6}\nFunc STR_PAD_LEFT(STR, length, pad_char) {\n Set CURRENT_LEN LEN(STR)\n \n If (CURRENT_LEN >= length) {\n Return STR\n }\n \n Set PAD_COUNT (length - CURRENT_LEN)\n Set RESULT \"\"\n Set I 0\n \n While (I < PAD_COUNT) {\n Set RESULT (RESULT + pad_char)\n Set I (I + 1)\n }\n \n Return (RESULT + STR)\n}\n\n// \u{5728}\u{5b57}\u{7b26}\u{4e32}\u{53f3}\u{4fa7}\u{586b}\u{5145}\u{5b57}\u{7b26}\u{5230}\u{6307}\u{5b9a}\u{957f}\u{5ea6}\nFunc STR_PAD_RIGHT(STR, length, pad_char) {\n Set CURRENT_LEN LEN(STR)\n \n If (CURRENT_LEN >= length) {\n Return STR\n }\n \n Set PAD_COUNT (length - CURRENT_LEN)\n Set RESULT STR\n Set I 0\n \n While (I < PAD_COUNT) {\n Set RESULT (RESULT + pad_char)\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// \u{5728}\u{5b57}\u{7b26}\u{4e32}\u{4e24}\u{4fa7}\u{586b}\u{5145}\u{5b57}\u{7b26}\u{5230}\u{6307}\u{5b9a}\u{957f}\u{5ea6}\u{ff08}\u{5c45}\u{4e2d}\u{ff09}\nFunc STR_PAD_CENTER(STR, length, pad_char) {\n Set CURRENT_LEN LEN(STR)\n \n If (CURRENT_LEN >= length) {\n Return STR\n }\n \n Set TOTAL_PAD (length - CURRENT_LEN)\n Set LEFT_PAD (TOTAL_PAD / 2)\n Set RIGHT_PAD (TOTAL_PAD - LEFT_PAD)\n \n Set RESULT \"\"\n Set I 0\n \n // \u{5de6}\u{4fa7}\u{586b}\u{5145}\n While (I < LEFT_PAD) {\n Set RESULT (RESULT + pad_char)\n Set I (I + 1)\n }\n \n Set RESULT (RESULT + STR)\n Set I 0\n \n // \u{53f3}\u{4fa7}\u{586b}\u{5145}\n While (I < RIGHT_PAD) {\n Set RESULT (RESULT + pad_char)\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{91cd}\u{590d} ====================\n\n// \u{91cd}\u{590d}\u{5b57}\u{7b26}\u{4e32} n \u{6b21}\nFunc STR_REPEAT(STR, COUNT) {\n If (COUNT <= 0) {\n Return \"\"\n }\n \n Set RESULT \"\"\n Set I 0\n \n While (I < COUNT) {\n Set RESULT (RESULT + STR)\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{53cd}\u{8f6c} ====================\n\n// \u{53cd}\u{8f6c}\u{5b57}\u{7b26}\u{4e32}\nFunc STR_REVERSE(STR) {\n Set LEN LEN(STR)\n Set RESULT \"\"\n Set I (LEN - 1)\n \n While (I >= 0) {\n Set CHAR STRSLICE(STR, I, I + 1)\n Set RESULT (RESULT + CHAR)\n Set I (I - 1)\n }\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{67e5}\u{8be2} ====================\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{5305}\u{542b}\u{5b50}\u{4e32}\nFunc STR_CONTAINS(STR, substr) {\n Set STR_LEN LEN(STR)\n Set SUB_LEN LEN(substr)\n \n If (SUB_LEN == 0) {\n Return True\n }\n \n If (SUB_LEN > STR_LEN) {\n Return False\n }\n \n Set MAX_POS (STR_LEN - SUB_LEN)\n Set I 0\n \n While (I <= MAX_POS) {\n Set SLICE STRSLICE(STR, I, I + SUB_LEN)\n If (SLICE == substr) {\n Return True\n }\n Set I (I + 1)\n }\n \n Return False\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4ee5}\u{6307}\u{5b9a}\u{524d}\u{7f00}\u{5f00}\u{59cb}\nFunc STR_STARTS_WITH(STR, prefix) {\n Set STR_LEN LEN(STR)\n Set PREFIX_LEN LEN(prefix)\n \n If (PREFIX_LEN > STR_LEN) {\n Return False\n }\n \n Set SLICE STRSLICE(STR, 0, PREFIX_LEN)\n Return (SLICE == prefix)\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4ee5}\u{6307}\u{5b9a}\u{540e}\u{7f00}\u{7ed3}\u{675f}\nFunc STR_ENDS_WITH(STR, suffix) {\n Set STR_LEN LEN(STR)\n Set SUFFIX_LEN LEN(suffix)\n \n If (SUFFIX_LEN > STR_LEN) {\n Return False\n }\n \n Set START (STR_LEN - SUFFIX_LEN)\n Set SLICE STRSLICE(STR, START, STR_LEN)\n Return (SLICE == suffix)\n}\n\n// \u{67e5}\u{627e}\u{5b50}\u{4e32}\u{9996}\u{6b21}\u{51fa}\u{73b0}\u{7684}\u{4f4d}\u{7f6e}\u{ff0c}\u{672a}\u{627e}\u{5230}\u{8fd4}\u{56de} -1\nFunc STR_INDEX_OF(STR, substr) {\n Set STR_LEN LEN(STR)\n Set SUB_LEN LEN(substr)\n \n If (SUB_LEN == 0) {\n Return 0\n }\n \n If (SUB_LEN > STR_LEN) {\n Return -1\n }\n \n Set MAX_POS (STR_LEN - SUB_LEN)\n Set I 0\n \n While (I <= MAX_POS) {\n Set SLICE STRSLICE(STR, I, I + SUB_LEN)\n If (SLICE == substr) {\n Return I\n }\n Set I (I + 1)\n }\n \n Return -1\n}\n\n// \u{67e5}\u{627e}\u{5b50}\u{4e32}\u{6700}\u{540e}\u{4e00}\u{6b21}\u{51fa}\u{73b0}\u{7684}\u{4f4d}\u{7f6e}\u{ff0c}\u{672a}\u{627e}\u{5230}\u{8fd4}\u{56de} -1\nFunc STR_LAST_INDEX_OF(STR, substr) {\n Set STR_LEN LEN(STR)\n Set SUB_LEN LEN(substr)\n \n If (SUB_LEN == 0) {\n Return STR_LEN\n }\n \n If (SUB_LEN > STR_LEN) {\n Return -1\n }\n \n Set I (STR_LEN - SUB_LEN)\n \n While (I >= 0) {\n Set SLICE STRSLICE(STR, I, I + SUB_LEN)\n If (SLICE == substr) {\n Return I\n }\n Set I (I - 1)\n }\n \n Return -1\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{66ff}\u{6362} ====================\n\n// \u{66ff}\u{6362}\u{5b57}\u{7b26}\u{4e32}\u{4e2d}\u{7684}\u{6240}\u{6709}\u{5339}\u{914d}\u{9879}\nFunc STR_REPLACE_ALL(STR, old_str, NEW_STR) {\n Set STR_LEN LEN(STR)\n Set OLD_LEN LEN(old_str)\n \n If (OLD_LEN == 0) {\n Return STR\n }\n \n Set RESULT \"\"\n Set I 0\n \n While (I < STR_LEN) {\n If ((I + OLD_LEN) <= STR_LEN) {\n Set SLICE STRSLICE(STR, I, I + OLD_LEN)\n If (SLICE == old_str) {\n Set RESULT (RESULT + NEW_STR)\n Set I (I + OLD_LEN)\n } Else {\n Set CHAR STRSLICE(STR, I, I + 1)\n Set RESULT (RESULT + CHAR)\n Set I (I + 1)\n }\n } Else {\n Set CHAR STRSLICE(STR, I, I + 1)\n Set RESULT (RESULT + CHAR)\n Set I (I + 1)\n }\n }\n \n Return RESULT\n}\n\n// \u{66ff}\u{6362}\u{5b57}\u{7b26}\u{4e32}\u{4e2d}\u{7684}\u{7b2c}\u{4e00}\u{4e2a}\u{5339}\u{914d}\u{9879}\nFunc STR_REPLACE_FIRST(STR, old_str, NEW_STR) {\n Set POS STR_INDEX_OF(STR, old_str)\n \n If (POS == -1) {\n Return STR\n }\n \n Set OLD_LEN LEN(old_str)\n Set BEFORE STRSLICE(STR, 0, POS)\n Set AFTER STRSLICE(STR, POS + OLD_LEN, LEN(STR))\n \n Return (BEFORE + NEW_STR + AFTER)\n}\n\n// ==================== \u{5927}\u{5c0f}\u{5199}\u{8f6c}\u{6362} ====================\n\n// \u{8f6c}\u{6362}\u{4e3a}\u{5927}\u{5199}\u{ff08}\u{4ec5}\u{9650} ASCII \u{5b57}\u{7b26}\u{ff09}\nFunc STR_TO_UPPER(STR) {\n Set LEN LEN(STR)\n Set RESULT \"\"\n Set I 0\n \n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n // ASCII: a-z (97-122) -> A-Z (65-90)\n If (CHAR >= \"a\" && CHAR <= \"z\") {\n // \u{8fd9}\u{91cc}\u{9700}\u{8981}\u{5b57}\u{7b26}\u{4ee3}\u{7801}\u{64cd}\u{4f5c}\u{ff0c}\u{6682}\u{65f6}\u{4f7f}\u{7528}\u{7b80}\u{5355}\u{6620}\u{5c04}\n Set UPPER_CHAR CHAR\n If (CHAR == \"a\") { Set UPPER_CHAR \"A\" }\n If (CHAR == \"b\") { Set UPPER_CHAR \"B\" }\n If (CHAR == \"c\") { Set UPPER_CHAR \"C\" }\n If (CHAR == \"d\") { Set UPPER_CHAR \"D\" }\n If (CHAR == \"e\") { Set UPPER_CHAR \"E\" }\n If (CHAR == \"f\") { Set UPPER_CHAR \"F\" }\n If (CHAR == \"g\") { Set UPPER_CHAR \"G\" }\n If (CHAR == \"h\") { Set UPPER_CHAR \"H\" }\n If (CHAR == \"I\") { Set UPPER_CHAR \"I\" }\n If (CHAR == \"j\") { Set UPPER_CHAR \"J\" }\n If (CHAR == \"k\") { Set UPPER_CHAR \"K\" }\n If (CHAR == \"l\") { Set UPPER_CHAR \"L\" }\n If (CHAR == \"m\") { Set UPPER_CHAR \"M\" }\n If (CHAR == \"n\") { Set UPPER_CHAR \"N\" }\n If (CHAR == \"o\") { Set UPPER_CHAR \"O\" }\n If (CHAR == \"p\") { Set UPPER_CHAR \"P\" }\n If (CHAR == \"q\") { Set UPPER_CHAR \"Q\" }\n If (CHAR == \"r\") { Set UPPER_CHAR \"R\" }\n If (CHAR == \"s\") { Set UPPER_CHAR \"S\" }\n If (CHAR == \"t\") { Set UPPER_CHAR \"T\" }\n If (CHAR == \"u\") { Set UPPER_CHAR \"U\" }\n If (CHAR == \"v\") { Set UPPER_CHAR \"V\" }\n If (CHAR == \"w\") { Set UPPER_CHAR \"W\" }\n If (CHAR == \"x\") { Set UPPER_CHAR \"X\" }\n If (CHAR == \"y\") { Set UPPER_CHAR \"Y\" }\n If (CHAR == \"z\") { Set UPPER_CHAR \"Z\" }\n Set RESULT (RESULT + UPPER_CHAR)\n } Else {\n Set RESULT (RESULT + CHAR)\n }\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// \u{8f6c}\u{6362}\u{4e3a}\u{5c0f}\u{5199}\u{ff08}\u{4ec5}\u{9650} ASCII \u{5b57}\u{7b26}\u{ff09}\nFunc STR_TO_LOWER(STR) {\n Set LEN LEN(STR)\n Set RESULT \"\"\n Set I 0\n \n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n // ASCII: A-Z (65-90) -> a-z (97-122)\n If (CHAR >= \"A\" && CHAR <= \"Z\") {\n Set LOWER_CHAR CHAR\n If (CHAR == \"A\") { Set LOWER_CHAR \"a\" }\n If (CHAR == \"B\") { Set LOWER_CHAR \"b\" }\n If (CHAR == \"C\") { Set LOWER_CHAR \"c\" }\n If (CHAR == \"D\") { Set LOWER_CHAR \"d\" }\n If (CHAR == \"E\") { Set LOWER_CHAR \"e\" }\n If (CHAR == \"F\") { Set LOWER_CHAR \"f\" }\n If (CHAR == \"G\") { Set LOWER_CHAR \"g\" }\n If (CHAR == \"H\") { Set LOWER_CHAR \"h\" }\n If (CHAR == \"I\") { Set LOWER_CHAR \"I\" }\n If (CHAR == \"J\") { Set LOWER_CHAR \"j\" }\n If (CHAR == \"K\") { Set LOWER_CHAR \"k\" }\n If (CHAR == \"L\") { Set LOWER_CHAR \"l\" }\n If (CHAR == \"M\") { Set LOWER_CHAR \"m\" }\n If (CHAR == \"N\") { Set LOWER_CHAR \"n\" }\n If (CHAR == \"O\") { Set LOWER_CHAR \"o\" }\n If (CHAR == \"P\") { Set LOWER_CHAR \"p\" }\n If (CHAR == \"Q\") { Set LOWER_CHAR \"q\" }\n If (CHAR == \"R\") { Set LOWER_CHAR \"r\" }\n If (CHAR == \"S\") { Set LOWER_CHAR \"s\" }\n If (CHAR == \"T\") { Set LOWER_CHAR \"t\" }\n If (CHAR == \"U\") { Set LOWER_CHAR \"u\" }\n If (CHAR == \"V\") { Set LOWER_CHAR \"v\" }\n If (CHAR == \"W\") { Set LOWER_CHAR \"w\" }\n If (CHAR == \"X\") { Set LOWER_CHAR \"x\" }\n If (CHAR == \"Y\") { Set LOWER_CHAR \"y\" }\n If (CHAR == \"Z\") { Set LOWER_CHAR \"z\" }\n Set RESULT (RESULT + LOWER_CHAR)\n } Else {\n Set RESULT (RESULT + CHAR)\n }\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{5206}\u{5272} ====================\n\n// \u{6309}\u{5206}\u{9694}\u{7b26}\u{5206}\u{5272}\u{5b57}\u{7b26}\u{4e32}\u{4e3a}\u{6570}\u{7ec4}\nFunc STR_SPLIT(STR, DELIMITER) {\n Set RESULT []\n Set STR_LEN_ LEN(STR)\n Set DELIM_LEN LEN(DELIMITER)\n \n If (DELIM_LEN == 0) {\n // \u{5206}\u{5272}\u{6bcf}\u{4e2a}\u{5b57}\u{7b26}\n Set I 0\n While (I < STR_LEN_) {\n Set CHAR STRSLICE(STR, I, I + 1)\n Set RESULT PUSH(RESULT, CHAR)\n Set I (I + 1)\n }\n Return RESULT\n }\n \n Set START 0\n Set I 0\n \n While (I <= (STR_LEN_ - DELIM_LEN)) {\n Set SLICE STRSLICE(STR, I, I + DELIM_LEN)\n If (SLICE == DELIMITER) {\n Set PART STRSLICE(STR, START, I)\n Set RESULT PUSH(RESULT, PART)\n Set I (I + DELIM_LEN)\n Set START I\n } Else {\n Set I (I + 1)\n }\n }\n \n // \u{6dfb}\u{52a0}\u{6700}\u{540e}\u{4e00}\u{90e8}\u{5206}\n Set LAST_PART STRSLICE(STR, START, STR_LEN_)\n Set RESULT PUSH(RESULT, LAST_PART)\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{8fde}\u{63a5} ====================\n\n// \u{7528}\u{5206}\u{9694}\u{7b26}\u{8fde}\u{63a5}\u{6570}\u{7ec4}\u{5143}\u{7d20}\u{4e3a}\u{5b57}\u{7b26}\u{4e32}\nFunc STR_JOIN(ARR, DELIMITER) {\n Set LEN LEN(ARR)\n \n If (LEN == 0) {\n Return \"\"\n }\n \n Set RESULT TO_STRING(ARR[0])\n Set I 1\n \n While (I < LEN) {\n Set RESULT (RESULT + DELIMITER + TO_STRING(ARR[I]))\n Set I (I + 1)\n }\n \n Return RESULT\n}\n\n// ==================== \u{5b57}\u{7b26}\u{4e32}\u{68c0}\u{67e5} ====================\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4e3a}\u{7a7a}\nFunc STR_IS_EMPTY(STR) {\n Return (LEN(STR) == 0)\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4ec5}\u{5305}\u{542b}\u{7a7a}\u{767d}\u{5b57}\u{7b26}\nFunc STR_IS_BLANK(STR) {\n Set TRIMMED STR_TRIM(STR)\n Return (LEN(TRIMMED) == 0)\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4e3a}\u{6570}\u{5b57}\nFunc STR_IS_NUMERIC(STR) {\n Set LEN LEN(STR)\n \n If (LEN == 0) {\n Return False\n }\n \n Set I 0\n Set HAS_DOT False\n \n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n \n If (CHAR == \"-\" || CHAR == \"+\") {\n If (I != 0) {\n Return False\n }\n } Elif (CHAR == \".\") {\n If (HAS_DOT) {\n Return False\n }\n Set HAS_DOT True\n } Elif (CHAR < \"0\" || CHAR > \"9\") {\n Return False\n }\n \n Set I (I + 1)\n }\n \n Return True\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4ec5}\u{5305}\u{542b}\u{5b57}\u{6bcd}\nFunc STR_IS_ALPHA(STR) {\n Set LEN LEN(STR)\n \n If (LEN == 0) {\n Return False\n }\n \n Set I 0\n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n If (!((CHAR >= \"a\" && CHAR <= \"z\") || (CHAR >= \"A\" && CHAR <= \"Z\"))) {\n Return False\n }\n Set I (I + 1)\n }\n \n Return True\n}\n\n// \u{68c0}\u{67e5}\u{5b57}\u{7b26}\u{4e32}\u{662f}\u{5426}\u{4ec5}\u{5305}\u{542b}\u{5b57}\u{6bcd}\u{548c}\u{6570}\u{5b57}\nFunc STR_IS_ALPHANUMERIC(STR) {\n Set LEN LEN(STR)\n \n If (LEN == 0) {\n Return False\n }\n \n Set I 0\n While (I < LEN) {\n Set CHAR STRSLICE(STR, I, I + 1)\n Set IS_ALPHA ((CHAR >= \"a\" && CHAR <= \"z\") || (CHAR >= \"A\" && CHAR <= \"Z\"))\n Set IS_DIGIT (CHAR >= \"0\" && CHAR <= \"9\")\n If (!(IS_ALPHA || IS_DIGIT)) {\n Return False\n }\n Set I (I + 1)\n }\n \n Return True\n}\n\n";Expand description
字符串工具库