예제 #1
0
        /** Splits a backslash escaped string on the separator.
         * <p>
         * Current backslash escaping supported:
         * <br> \n \t \r \b \f are escaped the same as a Java String
         * <br> Other characters following a backslash are produced verbatim (\c => c)
         *
         * @param s  the string to split
         * @param separator the separator to split on
         * @param decode decode backslash escaping
         */
        public static List /*<String>*/ splitSmart(string s, string separator, bool decode)
        {
            ArrayList /*<String>*/ lst = new ArrayList/*<String>*/ (2);

            java.lang.StringBuilder sb = new java.lang.StringBuilder();
            int pos = 0, end = s.Length;

            while (pos < end)
            {
                if (java.lang.String.instancehelper_startsWith(s, separator, pos))
                {
                    if (sb.length() > 0)
                    {
                        lst.add(sb.toString());
                        sb = new java.lang.StringBuilder();
                    }
                    pos += separator.Length;
                    continue;
                }

                char ch = s[pos++];
                if (ch == '\\')
                {
                    if (!decode)
                    {
                        sb.append(ch);
                    }
                    if (pos >= end)
                    {
                        break;  // ERROR, or let it go?
                    }
                    ch = s[pos++];
                    if (decode)
                    {
                        switch (ch)
                        {
                        case 'n': ch = '\n'; break;

                        case 't': ch = '\t'; break;

                        case 'r': ch = '\r'; break;

                        case 'b': ch = '\b'; break;

                        case 'f': ch = '\f'; break;
                        }
                    }
                }

                sb.append(ch);
            }

            if (sb.length() > 0)
            {
                lst.add(sb.toString());
            }

            return(lst);
        }
예제 #2
0
        public static List /*<String>*/ splitWS(string s, bool decode)
        {
            ArrayList /*<String>*/ lst = new ArrayList/*<String>*/ (2);

            java.lang.StringBuilder sb = new java.lang.StringBuilder();
            int pos = 0, end = s.Length;

            while (pos < end)
            {
                char ch = s[pos++];
                if (java.lang.Character.isWhitespace(ch))
                {
                    if (sb.length() > 0)
                    {
                        lst.add(sb.toString());
                        sb = new java.lang.StringBuilder();
                    }
                    continue;
                }

                if (ch == '\\')
                {
                    if (!decode)
                    {
                        sb.append(ch);
                    }
                    if (pos >= end)
                    {
                        break;  // ERROR, or let it go?
                    }
                    ch = s[pos++];
                    if (decode)
                    {
                        switch (ch)
                        {
                        case 'n': ch = '\n'; break;

                        case 't': ch = '\t'; break;

                        case 'r': ch = '\r'; break;

                        case 'b': ch = '\b'; break;

                        case 'f': ch = '\f'; break;
                        }
                    }
                }

                sb.append(ch);
            }

            if (sb.length() > 0)
            {
                lst.add(sb.toString());
            }

            return(lst);
        }
예제 #3
0
 public String(StringBuilder builder)
 {
     this.value = Arrays.copyOf(builder.getValue(), builder.length());
 }