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

📄 emailaddress.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You under the Apache License, Version 2.0 *  (the "License"); you may not use this file except in compliance with *  the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. * */package org.apache.tools.ant.taskdefs.email;/** * Holds an email address. * * @since Ant 1.5 */public class EmailAddress {    private String name;    private String address;    /** Creates an empty email address  */    public EmailAddress() {    }    /**     * Creates a new email address based on the given string     *     * @param email the email address (with or without <>)     * Acceptable forms include:     *    address     *    <address>     *    name <address>     *    <address> name     *    (name) address     *    address (name)     */    // Make a limited attempt to extract a sanitized name and email address    // Algorithm based on the one found in Ant's MailMessage.java    public EmailAddress(String email) {        final int minLen = 9;        int len = email.length();        // shortcut for "<address>"        if (len > minLen) {            if ((email.charAt(0) == '<' || email.charAt(1) == '<')            && (email.charAt(len - 1) == '>' || email.charAt(len - 2) == '>')) {                this.address = trim(email, true);                return;            }        }        int paramDepth = 0;        int start = 0;        int end = 0;        int nStart = 0;        int nEnd = 0;        for (int i = 0; i < len; i++) {            char c = email.charAt(i);            if (c == '(') {                paramDepth++;                if (start == 0) {                    end = i;  // support "address (name)"                    nStart = i + 1;                }            } else if (c == ')') {                paramDepth--;                if (end == 0) {                    start = i + 1;  // support "(name) address"                    nEnd = i;                }            } else if (paramDepth == 0 && c == '<') {                if (start == 0) {                    nEnd = i;                }                start = i + 1;            } else if (paramDepth == 0 && c == '>') {                end = i;                if (end != len - 1) {                    nStart = i + 1;                }            }        }        // DEBUG: System.out.println( email );        if (end == 0) {            end = len;        }        // DEBUG: System.out.println( "address: " + start + " " + end );        if (nEnd == 0) {            nEnd = len;        }        // DEBUG: System.out.println( "name: " + nStart + " " + nEnd );        this.address = trim(email.substring(start, end), true);        this.name = trim(email.substring(nStart, nEnd), false);        // if the two substrings are longer than the original, then name        // contains address - so reset the name to null        if (this.name.length() + this.address.length() > len) {            this.name = null;        }    }    /**     *  A specialised trim() that trims whitespace,     *  '(', ')', '"', '<', '>' from the start and end of strings     */    private String trim(String t, boolean trimAngleBrackets) {        int start = 0;        int end = t.length();        boolean trim = false;        do {            trim = false;            if (t.charAt(end - 1) == ')'                || (t.charAt(end - 1) == '>' && trimAngleBrackets)                || (t.charAt(end - 1) == '"' && t.charAt(end - 2) != '\\')                || t.charAt(end - 1) <= '\u0020') {                trim = true;                end--;            }            if (t.charAt(start) == '('                || (t.charAt(start) == '<' && trimAngleBrackets)                || t.charAt(start) == '"'                || t.charAt(start) <= '\u0020') {                trim = true;                start++;            }        } while (trim);        return t.substring(start, end);    }    /**     * Sets the personal / display name of the address     *     * @param name the display name     */    public void setName(String name) {        this.name = name;    }    /**     * Sets the email address     *     * @param address the actual email address (without <>)     */    public void setAddress(String address) {        this.address = address;    }    /**     * Constructs a string "name &lt;address&gt;" or "address"     *     * @return a string representation of the address     */    public String toString() {        if (name == null) {            return address;        } else {            return name + " <" + address + ">";        }    }    /**     * Returns the address     *     * @return the address part     */    public String getAddress() {        return address;    }    /**     * Returns the display name     *     * @return the display name part     */    public String getName() {        return name;    }}

⌨️ 快捷键说明

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