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

📄 str.java

📁 一个Web爬虫(机器人
💻 JAVA
字号:
/* * WebSPHINX web crawling toolkit * Copyright (C) 1998,1999 Carnegie Mellon University  *  * This library is free software; you can redistribute it * and/or modify it under the terms of the GNU Library * General Public License as published by the Free Software  * Foundation, version 2. * * WebSPHINX homepage: http://www.cs.cmu.edu/~rcm/websphinx/ */package websphinx.util;/** * String utility routines. */public abstract class Str {    /**     * Find first occurence of any of a set of characters.     * @param subject String in which to search     * @param chars Characters to search for     * @return index of first occurence in subject of a character from chars,     * or -1 if no match.     */    public static int indexOfAnyChar (String subject, String chars) {        return indexOfAnyChar (subject, chars, 0);    }    /**     * Find first occurence of any of a set of characters, starting     * at a specified index.     * @param subject String in which to search     * @param chars Characters to search for     * @param start Starting offset to search from     * @return index of first occurence (after start) in subject of a character from chars,     * or -1 if no match.     */    public static int indexOfAnyChar (String subject, String chars, int start) {        for (int i=start; i<subject.length(); ++i)            if (chars.indexOf (subject.charAt (i)) != -1)                return i;        return -1;    }    /**     * Replace all occurences of a string.     * @param subject String in which to search     * @param original String to search for in subject     * @param replacement String to substitute     * @return subject with all occurences of original replaced by replacement     */    public static String replace (String subject, String original, String replacement) {        StringBuffer output = new StringBuffer ();        int p = 0;        int i;        while ((i = subject.indexOf (original, p)) != -1) {            output.append (subject.substring (p, i));            output.append (replacement);            p = i + original.length();        }        if (p < subject.length ())            output.append (subject.substring(p));        return output.toString ();    }    /**     * Escapes metacharacters in a string.     * @param subject String in which metacharacters are to be escaped     * @param escapeChar the escape character (e.g., \)     * @param metachars the metacharacters that should be escaped     * @return subject with escapeChar inserted before every character found in metachars     */    public static String escape (String subject, char escapeChar, String metachars) {        StringBuffer output = new StringBuffer ();        int p = 0;        int i;        while ((i = indexOfAnyChar (subject, metachars, p)) != -1) {            output.append (subject.substring (p, i));            output.append (escapeChar);            output.append (subject.charAt (i));            p = i + 1;        }        if (p < subject.length ())            output.append (subject.substring(p));        return output.toString ();    }    /**     * Parse a number from a string. Finds the first recognizable base-10 number (integer or floating point)      * in the string and returns it as a Number.     * @param string String to parse     * @return first recognizable number     * @exception NumberFormatException if no recognizable number is found     */    private static final int INT = 0;    private static final int FRAC = 1;    private static final int EXP = 2;    public static Number parseNumber (String s) throws NumberFormatException {        int p = 0;        for (int i=0; i<s.length(); ++i) {            char c = s.charAt (i);            if (Character.isDigit (c)) {                int start = i;                int end = ++i;                int state = INT;                if (start > 0 && s.charAt (start-1) == '.') {                    --start;                    state = FRAC;                }                if (start > 0 && s.charAt (start-1) == '-')                    --start;              foundEnd:                while (i < s.length()) {                    switch (s.charAt (i)) {                      case '0': case '1': case '2': case '3': case '4':                      case '5': case '6': case '7': case '8': case '9':                        end = ++i;                        break;                      case '.':                        if (state != INT)                            break foundEnd;                        state = FRAC;                        ++i;                        break;                      case 'e':                      case 'E':                        state = EXP;                        ++i;                        if (i < s.length() &&                             ( (c = s.charAt (i)) == '+' || c == '-') )                          ++i;                        break;                      default:                        break foundEnd;                    }                }                                String num = s.substring (start, end);                try {                    if (state == INT)                        return new Integer (num);                    else                        return new Float (num);                } catch (NumberFormatException e) {                    throw new RuntimeException ("internal error: " + e);                }            }        }        throw new NumberFormatException (s);    }    public static void main (String[] args) {      for (int i=0; i<args.length; ++i)          System.out.println (parseNumber (args[i]));  }}

⌨️ 快捷键说明

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