⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringutils.java

📁 我费了好大劲才找到的一款非常全的OA办公自动化软件源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        return toAsciiString(buffer, 0, buffer.length);    }    /**     * Returns the bytes as an ASCII String.     *     * @param buffer the bytes to convert     * @param startPos the position to start converting     * @param length the length of the string to convert     *     * @return the ASCII string     */    public static final String toAsciiString(byte[] buffer, int startPos,        int length) {        char[] charArray = new char[length];        int readpoint = startPos;        for (int i = 0; i < length; i++) {            charArray[i] = (char) buffer[readpoint];            readpoint++;        }        return new String(charArray);    }    /**     * Unfortunately, SJIS has 0x5c as a high byte in some of its double-byte     * characters, so we need to escape it.     *     * @param origBytes the original bytes in SJIS format     * @param origString the string that had .getBytes() called on it     * @param offset where to start converting from     * @param length how many characters to convert.     *     * @return byte[] with 0x5c escaped     */    public static byte[] escapeEasternUnicodeByteStream(byte[] origBytes,        String origString, int offset, int length) {        if ((origBytes == null) || (origBytes.length == 0)) {            return origBytes;        }        int bytesLen = origBytes.length;        int bufIndex = 0;        int strIndex = 0;        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(bytesLen);        while (true) {            if (origString.charAt(strIndex) == '\\') {                // write it out as-is                bytesOut.write(origBytes[bufIndex++]);                //bytesOut.write(origBytes[bufIndex++]);            } else {                // Grab the first byte                int loByte = (int) origBytes[bufIndex];                if (loByte < 0) {                    loByte += 256; // adjust for signedness/wrap-around                }                // We always write the first byte                bytesOut.write(loByte);                //                // The codepage characters in question exist between                // 0x81-0x9F and 0xE0-0xFC...                //                // See:                //                // http://www.microsoft.com/GLOBALDEV/Reference/dbcs/932.htm                //                // Problematic characters in GBK                //                // U+905C : CJK UNIFIED IDEOGRAPH                //                // Problematic characters in Big5                //                // B9F0 = U+5C62 : CJK UNIFIED IDEOGRAPH                //                if (loByte >= 0x80) {                    if (bufIndex < (bytesLen - 1)) {                        int hiByte = (int) origBytes[bufIndex + 1];                        if (hiByte < 0) {                            hiByte += 256; // adjust for signedness/wrap-around                        }                        // write the high byte here, and increment the index                        // for the high byte                        bytesOut.write(hiByte);                        bufIndex++;                        // escape 0x5c if necessary                        if (hiByte == 0x5C) {                            bytesOut.write(hiByte);                        }                    }                } else if (loByte == 0x5c) {                    if (bufIndex < (bytesLen - 1)) {                        int hiByte = (int) origBytes[bufIndex + 1];                        if (hiByte < 0) {                            hiByte += 256; // adjust for signedness/wrap-around                        }                        if (hiByte == 0x62) {                            // we need to escape the 0x5c                            bytesOut.write(0x5c);                            bytesOut.write(0x62);                            bufIndex++;                        }                    }                }                bufIndex++;            }            if (bufIndex >= bytesLen) {                // we're done                break;            }            strIndex++;        }        return bytesOut.toByteArray();    }    /**     * Returns the first non whitespace char, converted to upper case     *     * @param searchIn the string to search in     *     * @return the first non-whitespace character, upper cased.     */    public static char firstNonWsCharUc(String searchIn) {        if (searchIn == null) {            return 0;        }        int length = searchIn.length();        for (int i = 0; i < length; i++) {            char c = searchIn.charAt(i);            if (!Character.isWhitespace(c)) {                return Character.toUpperCase(c);            }        }        return 0;    }    /**     * Splits stringToSplit into a list, using the given delimitter     *     * @param stringToSplit the string to split     * @param delimitter the string to split on     * @param trim should the split strings be whitespace trimmed?     *     * @return the list of strings, split by delimitter     *     * @throws IllegalArgumentException DOCUMENT ME!     */    public static final List split(String stringToSplit, String delimitter,        boolean trim) {        if (stringToSplit == null) {            return new ArrayList();        }        if (delimitter == null) {            throw new IllegalArgumentException();        }        StringTokenizer tokenizer = new StringTokenizer(stringToSplit,                delimitter, false);        List splitTokens = new ArrayList(tokenizer.countTokens());        while (tokenizer.hasMoreTokens()) {            String token = tokenizer.nextToken();            if (trim) {                token = token.trim();            }            splitTokens.add(token);        }        return splitTokens;    }    /**     * Determines whether or not the string 'searchIn' contains the string     * 'searchFor', dis-regarding case. Shorthand for a     * String.regionMatch(...)     *     * @param searchIn the string to search in     * @param searchFor the string to search for     *     * @return whether searchIn starts with searchFor, ignoring case     */    public static boolean startsWithIgnoreCase(String searchIn, String searchFor) {        return startsWithIgnoreCase(searchIn, 0, searchFor);    }    /**     * Determines whether or not the string 'searchIn' contains the string     * 'searchFor', dis-regarding case starting at 'startAt' Shorthand for a     * String.regionMatch(...)     *     * @param searchIn the string to search in     * @param startAt the position to start at     * @param searchFor the string to search for     *     * @return whether searchIn starts with searchFor, ignoring case     */    public static boolean startsWithIgnoreCase(String searchIn, int startAt,        String searchFor) {        return searchIn.regionMatches(true, 0, searchFor, startAt,            searchFor.length());    }    /**     * Determines whether or not the sting 'searchIn' contains the string     * 'searchFor', di-regarding case and leading whitespace     *     * @param searchIn the string to search in     * @param searchFor the string to search for     *     * @return true if the string starts with 'searchFor' ignoring whitespace     */    public static boolean startsWithIgnoreCaseAndWs(String searchIn,        String searchFor) {        int beginPos = 0;        int inLength = searchIn.length();        for (beginPos = 0; beginPos < inLength; beginPos++) {            if (!Character.isWhitespace(searchIn.charAt(beginPos))) {                break;            }        }        return startsWithIgnoreCase(searchIn, beginPos, searchFor);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -