?? verifier.java
字號:
return null; } /** * <p> * Checks a string to see if it is a legal RFC 2396 URI. * Both absolute and relative URIs are supported. * </p> * * @param uri <code>String</code> to check. * @return <code>String</code> reason the URI is illegal, or * <code>null</code> if OK. */ public static String checkURI(String uri) { // URIs can be null or empty if ((uri == null) || (uri.equals(""))) { return null; } for (int i = 0; i < uri.length(); i++) { char test = uri.charAt(i); if (!isURICharacter(test)) { String msgNumber = "0x" + Integer.toHexString(test); if (test <= 0x09) msgNumber = "0x0" + Integer.toHexString(test); return "URIs cannot contain " + msgNumber; } // end if if (test == '%') { // must be followed by two hexadecimal digits try { char firstDigit = uri.charAt(i+1); char secondDigit = uri.charAt(i+2); if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit)) { return "Percent signs in URIs must be followed by " + "exactly two hexadecimal digits."; } } catch (StringIndexOutOfBoundsException e) { return "Percent signs in URIs must be followed by " + "exactly two hexadecimal digits."; } } } // end for // If we got here, everything is OK return null; } /** * <p> * This is a utility function for determining whether a specified * Unicode character is a hexadecimal digit as defined in RFC 2396; * that is, one of the ASCII characters 0-9, a-f, or A-F. * </p> * * @param c to check for hex digit. * @return true if it's allowed, false otherwise. */ public static boolean isHexDigit(char c) { // I suspect most characters passed to this method will be // correct hexadecimal digits, so I test for the true cases // first. If this proves to be a performance bottleneck // a switch statement or lookup table // might optimize this. if (c >= '0' && c <= '9') return true; if (c >= 'A' && c <= 'F') return true; if (c >= 'a' && c <= 'f') return true; return false; } /** * <p> * This is a utility function for determining whether * a specified Unicode character is legal in URI references * as determined by RFC 2396. * </p> * * @param c <code>char</code> to check for URI reference compliance. * @return true if it's allowed, false otherwise. */ public static boolean isURICharacter(char c) { if (c >= 'a' && c <= 'z') return true; if (c >= 'A' && c <= 'Z') return true; if (c >= '0' && c <= '9') return true; if (c == '/') return true; if (c == '-') return true; if (c == '.') return true; if (c == '?') return true; if (c == ':') return true; if (c == '@') return true; if (c == '&') return true; if (c == '=') return true; if (c == '+') return true; if (c == '$') return true; if (c == ',') return true; if (c == '%') return true; if (c == '_') return true; if (c == '!') return true; if (c == '~') return true; if (c == '*') return true; if (c == '\'') return true; if (c == '(') return true; if (c == ')') return true; return false; } /** * This is a utility function for determining whether a specified * character is a character according to production 2 of the * XML 1.0 specification. * * @param c <code>char</code> to check for XML compliance * @return <code>boolean</code> true if it's a character, * false otherwise */ public static boolean isXMLCharacter(int c) { if (c == '\n') return true; if (c == '\r') return true; if (c == '\t') return true; if (c < 0x20) return false; if (c <= 0xD7FF) return true; if (c < 0xE000) return false; if (c <= 0xFFFD) return true; if (c < 0x10000) return false; if (c <= 0x10FFFF) return true; return false; } /** * This is a utility function for determining whether a specified * character is a name character according to production 4 of the * XML 1.0 specification. * * @param c <code>char</code> to check for XML name compliance. * @return <code>boolean</code> true if it's a name character, * false otherwise. */ public static boolean isXMLNameCharacter(char c) { return (isXMLLetter(c) || isXMLDigit(c) || c == '.' || c == '-' || c == '_' || c == ':' || isXMLCombiningChar(c) || isXMLExtender(c)); } /** * This is a utility function for determining whether a specified * character is a legal name start character according to production 5 * of the XML 1.0 specification. This production does allow names * to begin with colons which the Namespaces in XML Recommendation * disallows. * * @param c <code>char</code> to check for XML name start compliance. * @return <code>boolean</code> true if it's a name start character, * false otherwise. */ public static boolean isXMLNameStartCharacter(char c) { return (isXMLLetter(c) || c == '_' || c ==':'); } /** * This is a utility function for determining whether a specified * character is a letter or digit according to productions 84 and 88 * of the XML 1.0 specification. * * @param c <code>char</code> to check. * @return <code>boolean</code> true if it's letter or digit, * false otherwise. */ public static boolean isXMLLetterOrDigit(char c) { return (isXMLLetter(c) || isXMLDigit(c)); } /** * This is a utility function for determining whether a specified character * is a letter according to production 84 of the XML 1.0 specification. * * @param c <code>char</code> to check for XML name compliance. * @return <code>String</code> true if it's a letter, false otherwise. */ public static boolean isXMLLetter(char c) { // Note that order is very important here. The search proceeds // from lowest to highest values, so that no searching occurs // above the character's value. BTW, the first line is equivalent to: // if (c >= 0x0041 && c <= 0x005A) return true; if (c < 0x0041) return false; if (c <= 0x005a) return true; if (c < 0x0061) return false; if (c <= 0x007A) return true; if (c < 0x00C0) return false; if (c <= 0x00D6) return true; if (c < 0x00D8) return false; if (c <= 0x00F6) return true; if (c < 0x00F8) return false; if (c <= 0x00FF) return true; if (c < 0x0100) return false; if (c <= 0x0131) return true; if (c < 0x0134) return false; if (c <= 0x013E) return true; if (c < 0x0141) return false; if (c <= 0x0148) return true; if (c < 0x014A) return false; if (c <= 0x017E) return true; if (c < 0x0180) return false; if (c <= 0x01C3) return true; if (c < 0x01CD) return false; if (c <= 0x01F0) return true; if (c < 0x01F4) return false; if (c <= 0x01F5) return true; if (c < 0x01FA) return false; if (c <= 0x0217) return true; if (c < 0x0250) return false; if (c <= 0x02A8) return true; if (c < 0x02BB) return false; if (c <= 0x02C1) return true; if (c == 0x0386) return true; if (c < 0x0388) return false; if (c <= 0x038A) return true; if (c == 0x038C) return true; if (c < 0x038E) return false; if (c <= 0x03A1) return true; if (c < 0x03A3) return false; if (c <= 0x03CE) return true; if (c < 0x03D0) return false; if (c <= 0x03D6) return true; if (c == 0x03DA) return true; if (c == 0x03DC) return true; if (c == 0x03DE) return true; if (c == 0x03E0) return true; if (c < 0x03E2) return false; if (c <= 0x03F3) return true; if (c < 0x0401) return false; if (c <= 0x040C) return true; if (c < 0x040E) return false; if (c <= 0x044F) return true; if (c < 0x0451) return false; if (c <= 0x045C) return true; if (c < 0x045E) return false; if (c <= 0x0481) return true; if (c < 0x0490) return false; if (c <= 0x04C4) return true; if (c < 0x04C7) return false; if (c <= 0x04C8) return true; if (c < 0x04CB) return false; if (c <= 0x04CC) return true; if (c < 0x04D0) return false; if (c <= 0x04EB) return true; if (c < 0x04EE) return false; if (c <= 0x04F5) return true; if (c < 0x04F8) return false; if (c <= 0x04F9) return true; if (c < 0x0531) return false; if (c <= 0x0556) return true; if (c == 0x0559) return true; if (c < 0x0561) return false; if (c <= 0x0586) return true; if (c < 0x05D0) return false; if (c <= 0x05EA) return true; if (c < 0x05F0) return false; if (c <= 0x05F2) return true; if (c < 0x0621) return false; if (c <= 0x063A) return true; if (c < 0x0641) return false; if (c <= 0x064A) return true; if (c < 0x0671) return false; if (c <= 0x06B7) return true; if (c < 0x06BA) return false; if (c <= 0x06BE) return true; if (c < 0x06C0) return false; if (c <= 0x06CE) return true; if (c < 0x06D0) return false; if (c <= 0x06D3) return true; if (c == 0x06D5) return true; if (c < 0x06E5) return false; if (c <= 0x06E6) return true; if (c < 0x0905) return false; if (c <= 0x0939) return true; if (c == 0x093D) return true; if (c < 0x0958) return false; if (c <= 0x0961) return true; if (c < 0x0985) return false; if (c <= 0x098C) return true; if (c < 0x098F) return false; if (c <= 0x0990) return true; if (c < 0x0993) return false; if (c <= 0x09A8) return true; if (c < 0x09AA) return false; if (c <= 0x09B0) return true; if (c == 0x09B2) return true; if (c < 0x09B6) return false; if (c <= 0x09B9) return true; if (c < 0x09DC) return false; if (c <= 0x09DD) return true; if (c < 0x09DF) return false; if (c <= 0x09E1) return true; if (c < 0x09F0) return false; if (c <= 0x09F1) return true; if (c < 0x0A05) return false; if (c <= 0x0A0A) return true; if (c < 0x0A0F) return false; if (c <= 0x0A10) return true; if (c < 0x0A13) return false; if (c <= 0x0A28) return true; if (c < 0x0A2A) return false; if (c <= 0x0A30) return true; if (c < 0x0A32) return false; if (c <= 0x0A33) return true; if (c < 0x0A35) return false; if (c <= 0x0A36) return true; if (c < 0x0A38) return false; if (c <= 0x0A39) return true; if (c < 0x0A59) return false; if (c <= 0x0A5C) return true; if (c == 0x0A5E) return true; if (c < 0x0A72) return false; if (c <= 0x0A74) return true; if (c < 0x0A85) return false; if (c <= 0x0A8B) return true; if (c == 0x0A8D) return true; if (c < 0x0A8F) return false; if (c <= 0x0A91) return true; if (c < 0x0A93) return false; if (c <= 0x0AA8) return true; if (c < 0x0AAA) return false; if (c <= 0x0AB0) return true; if (c < 0x0AB2) return false; if (c <= 0x0AB3) return true; if (c < 0x0AB5) return false; if (c <= 0x0AB9) return true; if (c == 0x0ABD) return true; if (c == 0x0AE0) return true; if (c < 0x0B05) return false; if (c <= 0x0B0C) return true; if (c < 0x0B0F) return false; if (c <= 0x0B10) return true; if (c < 0x0B13) return false; if (c <= 0x0B28) return true; if (c < 0x0B2A) return false; if (c <= 0x0B30) return true; if (c < 0x0B32) return false; if (c <= 0x0B33) return true; if (c < 0x0B36) return false; if (c <= 0x0B39) return true; if (c == 0x0B3D) return true; if (c < 0x0B5C) return false; if (c <= 0x0B5D) return true; if (c < 0x0B5F) return false; if (c <= 0x0B61) return true; if (c < 0x0B85) return false; if (c <= 0x0B8A) return true; if (c < 0x0B8E) return false; if (c <= 0x0B90) return true; if (c < 0x0B92) return false; if (c <= 0x0B95) return true; if (c < 0x0B99) return false; if (c <= 0x0B9A) return true; if (c == 0x0B9C) return true; if (c < 0x0B9E) return false; if (c <= 0x0B9F) return true; if (c < 0x0BA3) return false; if (c <= 0x0BA4) return true; if (c < 0x0BA8) return false; if (c <= 0x0BAA) return true; if (c < 0x0BAE) return false; if (c <= 0x0BB5) return true; if (c < 0x0BB7) return false; if (c <= 0x0BB9) return true; if (c < 0x0C05) return false; if (c <= 0x0C0C) return true; if (c < 0x0C0E) return false; if (c <= 0x0C10) return true; if (c < 0x0C12) return false; if (c <= 0x0C28) return true; if (c < 0x0C2A) return false; if (c <= 0x0C33) return true; if (c < 0x0C35) return false; if (c <= 0x0C39) return true; if (c < 0x0C60) return false; if (c <= 0x0C61) return true; if (c < 0x0C85) return false; if (c <= 0x0C8C) return true; if (c < 0x0C8E) return false; if (c <= 0x0C90) return true; if (c < 0x0C92) return false; if (c <= 0x0CA8) return true; if (c < 0x0CAA) return false; if (c <= 0x0CB3) return true; if (c < 0x0CB5) return false; if (c <= 0x0CB9) return true; if (c == 0x0CDE) return true; if (c < 0x0CE0) return false; if (c <= 0x0CE1) return true; if (c < 0x0D05) return false; if (c <= 0x0D0C) return true; if (c < 0x0D0E) return false; if (c <= 0x0D10) return true; if (c < 0x0D12) return false; if (c <= 0x0D28) return true; if (c < 0x0D2A) return false; if (c <= 0x0D39) return true; if (c < 0x0D60) return false; if (c <= 0x0D61) return true;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -