public static List<String> splitToList(String str, char separator) {
        List<String> result = new ArrayList<>(16);
        char[] chars = str.toCharArray();
        int startIndex = 0;
        int charLength = chars.length;
        for (int i = 0; i < charLength; i++) {
            if (chars[i] == separator) {
                int length = i - startIndex;
                char[] subChars = new char[length];
                System.arraycopy(chars, startIndex, subChars, 0, length);
                result.add(new String(subChars));
                startIndex = i + 1;
            }
        }
        if (startIndex < charLength) {
            int length = charLength - startIndex;
            char[] subChars = new char[length];
            System.arraycopy(chars, startIndex, subChars, 0, length);
            result.add(new String(subChars));
        }
        return result;
    }
@implNote The method assumes the string does NOT contain any extended control character if it
          is encoded in LATIN1. Though Latin-1 is a subset of Unicode, Latin-1 and UTF-8 have
          different bit patterns.
@see <a href="https://cs.stanford.edu/people/miles/iso8859.html">iso8859</a>
turms-server-common/src/main/java/im/turms/server/common/infra/lang/StringUtil.java